如何使用 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>