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>
相关推荐
考虑考虑3 天前
Mybatis实现批量插入
java·后端·mybatis
敲个大西瓜16 天前
mybatis拦截器插件实现数据库字段加解密
mybatis
武子康16 天前
Java-28 深入浅出 Spring 实现简易Ioc-04 在上节的业务下手动实现AOP
java·后端·mybatis
一条泥憨鱼16 天前
苍穹外卖【day6|微信登录与商品浏览功能】
后端·mybatis·苍穹外卖
vx-Biye_Design16 天前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis
摇滚侠16 天前
MyBatis+Spring+SpringMVC SSM 整合 179-185
java·spring·mybatis
摇滚侠16 天前
MyBatis+Spring+SpringMVC SSM ContextLoaderListener 177-178
java·spring·mybatis
Spring小子17 天前
【Spring Boot + Vue + DeepSeek】从零打造一个AI驱动的智能健康分析系统
java·spring boot·mybatis
武子康17 天前
Java-27 深入浅出 Spring - 实现简易Ioc-03 在上节的业务下手动实现IoC 从 XML 配置到 BeanFactory 反射注入
java·后端·mybatis