wrapper+ xml文件进行SQL编写

如何使用 wrapper+ xml文件进行SQL编写:

service层

多表联查时可以通过指定表名的方式,最终在mapper.xml会进行解析。

java 复制代码
QueryWrapper<SysMenu> wrapper = Wrappers.query();
wrapper.eq("sur.user_id", userId)
       .orderByAsc("m.parent_id")
       .orderByAsc("m.order_num");
menuList = baseMapper.selectMenuListByUserId(wrapper);

mapper接口

重点:@Param(Constants.WRAPPER)

java 复制代码
List<SysMenu> selectMenuListByUserId(@Param(Constants.WRAPPER) Wrapper<SysMenu> queryWrapper);

mapper.xml

重点:${ew.getCustomSqlSegment}或者使用${ew.sqlSegment} 获取的sql片段还可以使用表达式,如:${ew.sqlSegment.split('ORDER BY')[0]}

xml 复制代码
<select id="selectMenuListByUserId" resultMap="SysMenuResult">
	select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query_param, m.visible, m.status,
	                m.perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
	from sys_menu m
	left join sys_role_menu rm on m.menu_id = rm.menu_id
	left join sys_user_role sur on rm.role_id = sur.role_id
	left join sys_role ro on sur.role_id = ro.role_id
       ${ew.getCustomSqlSegment}
</select>
相关推荐
tanxiaomi2 小时前
Spring、Spring MVC 和 Spring Boot ,mybatis 相关面试题
java·开发语言·mybatis
q***96586 小时前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
p***93038 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
chxii8 小时前
在 MyBatis 中开启 SQL 日志
java·数据库·mybatis
222you21 小时前
MyBatis-Plus当中BaseMapper接口的增删查改操作
java·开发语言·mybatis
k***85841 天前
SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
spring boot·tomcat·mybatis
转转技术团队1 天前
MyBatis-Plus踩坑血泪史:那些年我们踩过的坑!
java·面试·mybatis
chxii1 天前
mybatis-spring 浅析
java·spring·mybatis
程序员小胖1 天前
困扰我一整天的MyBatis"Invalid bound statement"问题,原来是因为这个不起眼的注解冲突!
面试·mybatis
90后小陈老师2 天前
用户管理系统 05 实现后端注册功能 | Java新手实战 | 最小架构 | 期末实训 | Java+SpringBoot+Vue3
java·开发语言·spring boot·后端·spring·maven·mybatis