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>
相关推荐
Codeking__1 小时前
Redis初识——什么是Redis
数据库·redis·mybatis
hqp3 小时前
SQLite 不支持 LocalDateTime
sqlite·mybatis
用户8307196840824 小时前
秒杀面试!MyBatis-Spring-Boot 初始化流程深度拆解
spring boot·mybatis
8***f3956 小时前
Spring 中使用Mybatis,超详细
spring·tomcat·mybatis
w***76556 小时前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
张较瘦_19 小时前
SpringBoot3 | MyBatis-Plus 搞定宠物管理:从0到1实现增删改查
mybatis·宠物
沙白猿1 天前
Redis报错:A bean with that name has already been defined in class path resource
spring boot·redis·mybatis
小马爱打代码1 天前
MyBatis设计模式:构建者、工厂、代理模式
设计模式·mybatis·代理模式
柒.梧.2 天前
SSM常见核心面试问题深度解析
java·spring·面试·职场和发展·mybatis