mybatis-plus 自定义查询分页
- 配置加载分页 Bean
- 分页查询
- 自定义 sql 语句分页查询
配置加载分页 Bean
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
将此 bean 对象注入到自己工程中,不然分页功能无法实现。
分页查询
使用 mybatis-plus 自身的查询 sql 查询实现方式:
/**
* 使用 mybatis-plus 自身查询条件
* pagenum: 查询页
* pagecount:每页查询条数
* @return
*/
@Override
public String findByPage(int pagenum, int pagecount){
//查询条件
QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
("faddtime495");
//_userrMapper 数据源, User 查询条件对象
//分页条件
Page<User> page = new Page<>(pagenum,pagecount);
/**
* 返回结果集有:
* IPage<Map<String, Object> 或者 IPage<User>
* 可以返回 User 对象或者 Map
* */
IPage<Map<String, Object>> selectMapsPage = _userMapper.selectMapsPage(page,queryWrapper);
//查询结果集
List<Map<String, Object>> records = ();
//查询结果总条数
long total = ();
return records ;
}
自定义 sql 语句分页查询
首先,需要一个自定义的数据源方法查询,可使用原生的 mybatis 实现,使用 * 方式,或者使用注解 @Select 方式。
- 方式
<mapper namespace="">
<select resultType="Map" parameterType="String">
SELECT * FROM User WHERE userId = #{userId} AND userName = #{userName};
</select>
</mapper>
- 注解方式
/**
* List<Map<String, Object>> 返回结果可使用 user 对象或者 map 对象
* columnMap 查询条件
* page: 分页对象
* cm 表示 columnMap 对象
**/
@Select("SELECT * FROM User WHERE userId = #{} AND userName = # {} ")
public List<Map<String, Object>> getUser(@Param(Constants.COLUMN_MAP)
Map<String, Object> columnMap, Page<Map<String, Object>> page);
- impl 实现类
/**
* 分页查询所有需求
* pagenum : 查询页数
* pagecount : 查询条数
*/
@Override
public String getUserByMap(int pagenum, int pagecount) {
//查询条件 Map
Map<String,Object> condition = new HashMap<>();
("userId",fcustomerid);
("userId",userName);
//分页插件
Page<Map<String, Object>> page = new Page<>(pagenum,pagecount);
//自定义分页查询所有需求
List<Map<String, Object>> userlist = _usermapper.selectDemandListPage(page);
(demandlist);
//需求总条数
long total = ();
return userlist ;
}
mybatis-plus 官网地址:/