mybatis多表查询,@select,包括动态条件
一,在已有类中添加新属性,需添加注解@TableField(exist = false),否则mybatis-plus封装的方法会报错
/** * 关联 用户角色菜单表查询 * @param roleId * @return */ @Select({"<script> select urt.*,r.*,r.role_name roleName,m.name menuName,tr.tr_name trName,tr.right_descrip trDescrip,urt.tright_type " + " from user_role_tright urt " + " left join role r on urt.user_or_role_id=r.id " + " left join menu m on urt.menu_id=m.id " , " left join tright tr on urt.tright_id=tr.id " + " where urt.user_role_type = '0'" + //0:角色id "<when test='roleId!=null and roleId!=\"\" '>"+ " and urt.user_or_role_id = #{roleId} ", "</when>", "</script>" }) public List<UserRoleTright> dyRoleMenuPerssion(@Param("roleId") String roleId);
实体类属性:
/*************************************** * 关联查询自定义字段,需要使用注解@TableField(exist=false),即该条属性表示数据库表中不存在的, * 即mybatis-plus封装方法中sql语句不会使用此字段。自定义中可以使用 * *************************************************/ @TableField(exist = false)//重点:Mybatis-plus中默认操作忽略该字段 private String roleName;
也可使用foreach标签
二,创建一个新类,将结果集封装到此类中
@Select("select urt.*,r.role_name roleName,r.* from user_role_tright urt LEFT JOIN role r on urt.user_or_role_id=r.id" + " WHERE urt.user_role_type = '0'") public List<Map<String,Object>> testReturnListMap();//可以查询将结果放到list<Map>中,自己封装自定义entity。
如果包含特殊函数或特殊字符%,需要加.lambda()方法
Page<Map<String, Object>> selectMapsPage = douying2ActionMapper. selectMapsPage(new Page<Map<String, Object>>(1, 10),new QueryWrapper<Douying2Action>() .select("count(account) as countAccount ","FROM_UNIXTIME(savaTimer,'%Y-%m-%d')as day") .isNotNull("savaTimer").gt("FROM_UNIXTIME(savaTimer,'%Y-%m-%d')", "2021-04-05") .lt("FROM_UNIXTIME(savaTimer,'%Y-%m-%d')", "2021-04-22") .groupBy("FROM_UNIXTIME(savaTimer,'%Y-%m-%d')") .orderByDesc("savaTimer").lambda());
源码,是痛苦的,又是快乐的,如果没有这痛苦,也就没有了这快乐!
本文作者:好Wu赖
本文链接:https://www.cnblogs.com/erlongxizhu-03/p/12332151.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-02-19 正则表达式基础
2019-02-19 spring+springmvc+hibernate 框架搭建