Mybatis Plus 基于注解的多表分页查询

编程入门 行业动态 更新时间:2024-10-26 14:34:40

Mybatis Plus 基于注解的多表<a href=https://www.elefans.com/category/jswz/34/1769545.html style=分页查询"/>

Mybatis Plus 基于注解的多表分页查询

前言

Mybatis Plus 提供的基础分页查询只能满足单表,不足以支持多表,如果想要多表关联查询并且分页的话只能自己手动实现sql,今天就给大家介绍一下如何快速的基于注解方式实现多表分页查询。

实现方案

无非就是自己手动拼写sql并交付给Mybatis Plus 管理,下面直接上代码。

public interface CustomizeQueryMapper extends BaseMapper<CustomizeEntity> {String querySql = "SELECT a.*, b.role_name FROM t_user AS a LEFT JOIN t_user_role AS b ON b.u_id = a.id ";String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}";/*** 分页查询,不支持条件查询*/@Select(wrapperSql)List<CustomizeEntity> list(@Param("ew") Wrapper queryWrapper);/*** 分页查询,支持Mybatis Plus条件查询*/@Select(wrapperSql)Page<CustomizeEntity> pageList(Page page, @Param("ew") Wrapper queryWrapper);/*** 基础查询,注意是查询一条,需控制查询条件*/@Select(wrapperSql)CustomizeEntity findOne(@Param("ew") Wrapper queryWrapper);
}

注意:如表表字段不一致且字段与实体可以一一对应,使用这种方式没有问题,如果表字段不一致,例如:

SELECT a.*, b.role_name as userRoleName FROM t_user AS a LEFT JOIN t_user_role AS b ON b.u_id = a.id 

则查询时需使用别名查询:

QueryWrapper qw = new QueryWrapper();qw.lambda().eq("q.userRoleName",customizeEntity.getUserRoleName);
重点要点
  1. 以上实现方式的关键在于 ${ew.customSqlSegment},这样写可以使用 Mybatis Plus 自身的 QueryWrapperLambdaQueryWrapper 等查询器输出查询 sql

  2. 在自定义sql种不可出现where,如想使用请在最外层包装一下,类似于我这样在最外层包装了一个临时表 q ,即可以使用自定义Where条件也可使用 Mybatis Plus 自身的查询条件

  3. 返回实体必须与自定义mapper种的泛型实体一致,否则会报类型不匹配,例如

    public interface UserRoleMapper extends BaseMapper<UserRoleEntity> {String querySql = "SELECT a.*, b.role_name FROM t_user AS a LEFT JOIN t_user_role AS b ON b.u_id = a.id ";String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}";@Select(wrapperSql)CustomizeEntity findOne(@Param("ew") Wrapper queryWrapper);
    }
    

    BaseMapper<UserRoleEntity> 与返回值CustomizeEntity不匹配。

  4. 虽然 Mybatis Plus 提供了 @TableField(exist = false) 来区分是否为数据库字段注解,但还是建议自定义查询单独创建Mapper及响应实体。

总结

以上为本次为大家带来的Mybatis Plus 实现注解式多表分页查询,如有更好的方式或者方法欢迎大家评论指出,谢谢。

更多推荐

Mybatis Plus 基于注解的多表分页查询

本文发布于:2024-02-11 17:47:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1682402.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分页   注解   Mybatis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!