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>
相关推荐
ss2736 小时前
手写MyBatis第104弹:SqlSession从工厂构建到执行器选择的深度剖析
java·开发语言·后端·mybatis
一路向北_Coding12 小时前
MyBatis Generator让你优雅的写SQL
mysql·mybatis
莫陌尛.13 小时前
SSM(Spring+SpringMVC+Mybatis)整合
java·spring·mybatis
2301_7976042415 小时前
d41:MyBatisPlus入门,注解,配置,条件构造器,自定义SQL,IService
sql·mybatis
色空大师15 小时前
【mybatisPlus详解】
java·mybatis·mybatisplus
尘下吹霜15 小时前
【鉴权架构】SpringBoot + Sa-Token + MyBatis + MySQL + Redis 实现用户鉴权、角色管理、权限管理
spring boot·mysql·mybatis
小陈爱coding1 天前
SaaS多租户数据隔离实战:MyBatis拦截器实现行级安全方案
安全·云原生·mybatis·多租户
lang201509281 天前
MyBatis入门指南:从零掌握数据库操作
mybatis
222you1 天前
Mybatis(1)
java·tomcat·mybatis