在MyBatisPlus的使用过程中,之前很多时候都是使用queryWrapper(条件构造器)的构造方法传入实体对象,来实现条件的构造,例如
contentCategoryService.list(new QueryWrapper<ContentCategory>(contentCategory))
这个方法里是这么写的,原先我以为构造这里会去利用entity构造一个MP的条件对象,直到我用了自定义sql的方法。
public QueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
MP 是支持自定义sql的,官方文档用法如下:

看demo的理解就是MP会帮助你拼接wrapper中构造的条件,利用 ew.customSqlSegment 注入到sql中去,但是在实际使用中发现,只有调用条件构造方法(例如 eq like ne 等方法)才能顺利的拼接到SQL中去,这个着实让不少人踩了坑(并没有诋毁和不尊重开源团队的意思),因为这个文档也是在2020年才补上去的 Ƕ[……]





