Mybatis之动态sql及分页

1. if 标签示例:

在Mapper层接口定义方法

编写方法

 

将方法复制到Service接口类

 实现方法

 

 最后就可以进行测试了

 ​​​​​​​​​​​​​​

 2. trim 标签示例:

trim标签:

        mybatis中trim是动态拼接;

        java中表示去除前后空格;

trim标签中的属性:

       prefix:前缀
       suffix:后缀
       suffixOverride:去除后缀指定的字符
       prefixOverrides:去除前缀指定的字符

 

3. foreach 标签示例:

实体类中添加一个属性

在Mapper层接口定义方法

 

 实现ForEach方法:(此处介绍三种方法)

方法一:

方法二:

方法三: 

 

将方法复制到Service接口类 

 

实现方法:

方法测试及结果

 sql语句:

 4.传参:(此处介绍四种传参示例)

在Mapper层接口定义方法:

 编写dao方法:

 将方法复制到Service接口类 

 实现方法:

 进行测试

 5.模糊查询:

此处介绍三个方法

1、#{ }:相当于占位符,参数传递时,需要手动拼接百分号

 

2.${}:使用$传递参数时只会传递参数本身

 

 3.concat:mysql的函数

 

  关键:#{...}与${...}区别?
          参数类型为字符串,#会在前后加单引号['],$则直接插入值

 注:
          1) mybatis中使用OGNL表达式传递参数
          2) 优先使用#{...}
          3) ${...}方式存在SQL注入风险

6.查询返回结果集:

 resultMap:适合使用返回值是自定义实体类的情况
 resultType:适合使用返回值的数据类型是非自定义的,即jdk的提供的类型

 dao方法

 

 测试方法

 

 7.分页查询:

导入分页插件

<dependency>
         <groupId>com.github.pagehelper</groupId>
         <artifactId>pagehelper</artifactId>
         <version>5.1.2</version>
       </dependency>

  将pagehelper插件配置到mybatis中

 

dao 方法:

 

 

 以下提供了获取分页信息的二种方式

方式一:

  Page<Book> page = (Page<Book>)list;
          System.out.println("页码:" + page.getPageNum());
          System.out.println("页大小:" + page.getPageSize());
          System.out.println("总记录:" + page.getTotal());

方式二:

 PageInfo pageInfo = new PageInfo(list);
          System.out.println("页码:" + pageInfo.getPageNum());
          System.out.println("页大小:" + pageInfo.getPageSize());
          System.out.println("总记录:" + pageInfo.getTotal());

测试方法:

 执行结果:

8.范围查询,转义字符处理:

注意:

    >(&gt;)   
    <(&lt;)  
    &(&amp;) 
 空格(&nbsp;)

例:

 

 


版权声明:本文为m0_67596612原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。