场景:迷糊查询b表中所有满足条件的字段,根据这些满足条件的字段查询a表中的记录。
步骤:
1.根据关联字段使用内连接查询满足条件的记录,在sql语句后加上${ew.customSqlSegment},ew是mapper方法里的@Param(Constants.WRAPPER) Wrapper queryWrapper对象。首先判断ew.emptyOfWhere是否存在where条件,有的话再拼接上去,ew.customSqlSegment是WHERE + sql语句,没有where的时候加上 == false
2.设置page的参数 和 wrapper的查询条件
代码:
mapper层:
@Select("SELECT a.*,b.* FROM a INNER JOIN b ON a.字段 = b.字段 ${ew.customSqlSegment}")
Page<实体类> findPage(Page<实体类> page, @Param(Constants.WRAPPER) Wrapper<实体类> queryWrapper);
此处省略service层代码,直接用controller调用mapper
service层
controller层:
QueryWrapper<实体类> queryWrapper = new QueryWrapper();
queryWrapper.like("b表的列名",查询参数);
Page<实体类> page = new Page<>(页码,容量);
page = **mapper.findPage(page, queryWrapper);
page里就是满足条件的字段,如果需要查询a表中全部字段+b表的部分字段,可以创建一个包含a表全部字段和b表部分字段的实体类。