基于mybatis的动态条件分页查询

public class BaseDao{
  private SqlSessionTemplate session;
  /**
  * 分页查询
  * @param listSql 当前页数据的SQL
  * @param countSql 总条数SQL
  * @param queryMap 动态条件
  * @param pageNO 页码
  * @param pageCount 每页显示条数
  * @return
  * @throws Exception
  */
public CutPageBean cutPage(String listSql,String countSql,Map queryMap,int pageNO,int       pageCount)throws Exception{

CutPageBean bean = new CutPageBean();
//起始条数
queryMap.put("start", (pageNO-1)*pageCount);
//每页显示条数
queryMap.put("pageCount", pageCount);
//查询当前页数据
List list = this.getSession().selectList(listSql,queryMap);
bean.setList(list);
//查询总条数 
int count =this.getClient()
             .selectOne(countSql,queryMap);
bean.setCount(count);


}

mybatis支持动态SQL拼接,通过include标签可以链接指定的sql标签

<select id="cutFindAllUser" resultType="user">
   select * from t_user where 1=1
  <include refid="dynaUserSql"/>
  limit #{start},#{pageCount};
  </select>

  <select id="countUser" resultType="int">
  select count(*) from t_user where 1=1
  <include refid="dynaUserSql"/> ;
</select>

<sql id="dynaUserSql">
  <if test="userName != null and userName != ''">
  and userName like '%${userName}%'
  </if>
  <if test="birthday != null">
  <![CDATA[
  and birthday > #{birthday}
  ]]>
  </if>
  </sql>
### 回答1: 根据mybatis-plus分页查询条件,具体的代码可以参考以下示例:Page<User> page = new Page<User>(1, 10); QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); queryWrapper.eq("status", "1"); IPage<User> userIPage = userMapper.selectPage(page, queryWrapper); // 分页查询结果 List<User> userList = userIPage.getRecords(); ### 回答2: Mybatis-Plus是一个在Mybatis基础上进行封装的工具,用于快速、方便地操作数据库。其中的分页查询功能可以通过添加条件来实现。 首先,需要导入mybatis-plus的相关依赖包,并在配置文件中配置相应的数据库连接信息。 在具体的代码中,可以通过使用`Page`类来实现分页查询。首先,创建一个`Page`对象,指定需要查询的页码和每页显示的数量: ``` Page<User> page = new Page<>(pageNum, pageSize); ``` 然后,使用`selectPage`方法进行分页查询,并传入分页对象和查询条件: ``` IPage<User> userPage = userMapper.selectPage(page, queryWrapper); ``` `selectPage`方法会自动将查询结果封装到`userPage`对象中。可以通过`userPage.getRecords()`方法获取查询结果的列表,通过`userPage.getTotal()`方法获取总记录数。 最后,可以根据需要对查询结果进行处理,比如打印结果或进行其他操作: ``` List<User> userList = userPage.getRecords(); for (User user : userList) { System.out.println(user); } ``` 以上就是使用Mybatis-Plus进行分页查询的基本步骤。在实际应用中,可以根据具体的数据库和查询条件进行相应的调整和优化。 ### 回答3: Mybatis-Plus是一款基于Mybatis的增强工具,它提供了很多便捷的功能,其中包括分页查询。 要使用Mybatis-Plus进行分页查询,首先需要引入Mybatis-Plus的相关依赖。然后,在需要进行分页查询的Mapper接口方法上加上`@SelectPage`注解,指定分页查询的参数。例如: ```java @SelectPage IPage<User> selectUserPage(Page<User> page, @Param("username") String username); ``` 在上述代码中,`selectUserPage`方法使用了`@SelectPage`注解,参数`Page<User> page`表示分页查询的具体参数,`@Param("username") String username`表示查询条件。 接着,在Service层中调用该Mapper方法进行分页查询。例如: ```java @Override public IPage<User> getUserPage(int current, int size, String username) { Page<User> page = new Page<>(current, size); return userMapper.selectUserPage(page, username); } ``` 以上代码中,`getUserPage`方法接收当前页码`current`、每页显示数量`size`和查询条件`username`,创建`Page<User>`对象,并调用Mapper中的`selectUserPage`方法进行分页查询。 最后,在Controller层使用Service提供的分页查询方法。例如: ```java @GetMapping("/users") public IPage<User> getUsers(@RequestParam("page") int page, @RequestParam("size") int size, @RequestParam("username") String username) { return userService.getUserPage(page, size, username); } ``` 通过以上代码,我们可以实现基于Mybatis-Plus的分页查询功能。使用Mybatis-Plus进行分页查询,可以简化代码,减少重复开发工作,提高开发效率。同时,Mybatis-Plus还提供了其他便捷的功能,如自动注入等,可以进一步提升开发体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值