mybatis分页查询 多条件查询 有in
时间: 2023-08-15 16:32:21 浏览: 98
Mybatis框架(分页查询)
可以使用MyBatis提供的分页插件PageHelper进行分页查询,同时可以在Mapper.xml文件中使用动态SQL进行多条件查询和in查询。以下是一个例子:
```
<!-- Mapper.xml文件中的查询语句 -->
<select id="findUsers" resultMap="userResultMap">
SELECT * FROM users
<where>
<if test="name != null and name != ''">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
<if test="ids != null and ids.size() > 0">
AND id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
```
在Java代码中,使用PageHelper.startPage方法设置分页参数,并调用Mapper中的findUsers方法进行查询:
```
// 设置分页参数,第一页,每页2条数据
PageHelper.startPage(1, 2);
// 构造查询条件
Map<String, Object> params = new HashMap<>();
params.put("name", "张三");
params.put("age", 20);
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
params.put("ids", ids);
// 调用Mapper中的findUsers方法进行查询
List<User> users = userMapper.findUsers(params);
// 获取分页信息
PageInfo<User> pageInfo = new PageInfo<>(users);
System.out.println("总记录数:" + pageInfo.getTotal());
System.out.println("总页数:" + pageInfo.getPages());
System.out.println("当前页码:" + pageInfo.getPageNum());
System.out.println("每页记录数:" + pageInfo.getPageSize());
System.out.println("当前页的记录数:" + pageInfo.getSize());
System.out.println("当前页的第一条记录:" + pageInfo.getStartRow());
System.out.println("当前页的最后一条记录:" + pageInfo.getEndRow());
```
注意:在使用PageHelper进行分页查询时,需要在MyBatis的配置文件中配置分页插件:
```
<!-- MyBatis配置文件 -->
<configuration>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"/>
</plugins>
</configuration>
```
阅读全文