MybatisPlus自定义对象查询和分页方法

旧城等待, 2023-10-09 15:12 84阅读 0赞

记录一下自己实践的过程,方便以后查找使用

Dao层:

  1. /**
  2. * 使用自定义对象进行分页获取
  3. * @param page
  4. * @param wrapper
  5. * @return
  6. * Constants.WRAPPER="ew"
  7. */
  8. Page<ItemMemberVo> selectPageVo(Page<ItemMember> page,
  9. @Param(Constants.WRAPPER) Wrapper<ItemMember> wrapper);
  10. /**
  11. * 获取自定义对象
  12. * @param id
  13. * @return
  14. */
  15. ItemMemberVo getById(Serializable id);
  16. <!--获取分页信息vo-->
  17. <select id="selectPageVo"
  18. resultType="com.wiki.item.entity.vo.ItemMemberVo">
  19. select m.*,j.job_name
  20. from item_member m
  21. left join item_job j
  22. on m.job_id=j.id and j.del_flag='0'
  23. where m.del_flag='0'
  24. <if test="ew != null">
  25. <if test="ew.nonEmptyOfWhere">
  26. AND
  27. </if>
  28. ${ew.sqlSegment}
  29. </if>
  30. </select>
  31. <!-- 获取单条信息vo-->
  32. <select id="getById"
  33. resultType="com.wiki.item.entity.vo.ItemMemberVo">
  34. select m.*,j.job_name
  35. from item_member m
  36. left join item_job j on m.job_id=j.id and j.del_flag='0'
  37. where m.del_flag ='0' and m.id=${id}
  38. </select>

注意点:

1、事先准备好ResultMap层,方便返回值的获取
2、ew.sqlSegment是传参的wrapper的sql语句,ew.customSqlSegment则是WHERE + sql语句
3、方法的返回值为IPage对象,只有这样,在使用时,查询出来的结果才会自动赋值给IPage对象。
4、如果返回类型是 IPage 则入参的 IPage 不能为null,因为 返回的IPage == 入参的IPage;
如果想临时不分页,可以在初始化IPage时size参数传 <0 的值;
如果返回类型是 List 则入参的 IPage 可以为 null(为 null 则不分页),但需要你手动 入参的IPage.setRecords(返回的 List);
如果 xml 需要从 page 里取值,需要 page.属性 获取
5、生成 countSql 会在 left join 的表不参与 where 条件的情况下,把 left join 优化掉
所以建议任何带有 left join 的sql,都写标准sql,即给于表一个别名,字段也要 别名.字段
6、如果有传入其他参数,建议在传参那里写上**@Param(“名称”),然后xml使用名称.属性**进行使用即可

发表评论

表情:
评论列表 (有 0 条评论,84人围观)

还没有评论,来说两句吧...

相关阅读