mybatisplus如何在xml的連表查詢中使用queryWrapper
在xml的連表查詢使用queryWrapper
在mapper接口中定義方法
List<Map<String,Object>> linkUserAndDept(@Param("ew1") Wrapper<User> wrapper1, @Param("ew2") Wrapper<Dept> wrapper2);
在mapper xml中
<select id="linkUserAndDept" resultType="java.util.Map"> select u.name,u.age,u.address,d.* from user u left join dept d on u.deptid = d.deptid <where> <trim prefixOverrides="AND"> <if test="ew1!=null and ew1.sqlSegment!=null and ew1.sqlSegment != ''"> AND ${ew1.sqlSegment} </if> <if test="ew2!=null and ew2.sqlSegment!=null and ew2.sqlSegment != ''"> AND ${ew2.sqlSegment} </if> </trim> </where> </select>
調用該方法
QueryWrapper<User> userWrapper = Wrappers.<User>query(); QueryWrapper<Dept> deptWrapper = Wrappers.<Dept>query(); userWrapper.eq("u.name","張三"); userWrapper.setParamAlias("ew1"); //這裡要設置別名,不然會報異常 /*deptWrapper.eq("d.deptname","開發部"); deptWrapper.setParamAlias("ew2");*/ List<Map<String, Object>> map = userMapper.linkUserAndDept(userWrapper,deptWrapper);
mapper.xml 配合queryWrapper寫法
mapper中的接口這麼寫
IPage selectPosts(Page page, @Param(Constants.WRAPPER) QueryWrapper wrapper);
xml中${ew.customSqlSegment}
就是querywrapper的條件
select * from user_collection ${ew.customSqlSegment}
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Mybatis Plus QueryWrapper復合用法詳解
- mybatis-plus QueryWrapper and or 連用並且實現分頁
- mybatisplus使用xml的示例詳解
- Mybatis-Plus多表關聯查詢的使用案例解析
- mybatis的mapper特殊字符轉移及動態SQL條件查詢小結