MyBatis-Plus 多个动态 where 条件
MyBatis-Plus About 1,098 words场景
在编写自定义SQL
时,可能会有子查询,所以出现多个where
条件的情况。
限制
目前MyBatis-Plus
只支持一个自定义参数ew
。
改造
假设2
个where
条件的SQL
。
处理 Wrapper
QueryWrapper<Test> where1 = new QueryWrapper<>();
QueryWrapper<Test> where2 = new QueryWrapper<>();
String where1Str = where1.getCustomSqlSegment().replaceAll("ew", "where1");
String where2Str = where2.getCustomSqlSegment().replaceAll("ew", "where2");
List<Test> list = testMapper.stat(where1, where2, where1Str, where2Str);
Mapper
Mapper
中传入4
参数。分别是Wrapper
对象和转换后的字符串对象。
@Mapper
public interface TestMapper extends BaseMapper<Test> {
@Select("""
select tmp.*, t1.name, t2.name from (
select t1.name
from table1 t1
left join table2 t2 on t1.t_id = t2.id
${where1Str}
) tmp
left join table3 t3 on t1.t_id = t3.id
${where2Str}
""")
List<Test> stat(@Param("where1") Wrapper<Test> where1,
@Param("where2") Wrapper<Test> where2,
@Param("where1Str") String where1Str,
@Param("where2Str") String where2Str);
}
Views: 248 · Posted: 2024-10-30
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...