多表联查时使用mybatis-plus的LambdaQueryWrapper 多表相连下实现条件查询
MyBatisPlus分页多表关联查询 - SegmentFault 思否
下面的都是单表,如果要在多表联查的基础上使用mybatis-plus提供的LambdaQueryWrapper等查询条件包裹器对象,参看上面的链接
总而言之,在service使用LambdaQueryWrapper拼接条件查询后,其中的关键 lambda执行方法需要执行我们自己在mapper接口定义的方法,然后在方法上使用注解引入自定义的sql语句 但是不需要写条件部分 即where部分——直接引用LambdaQueryWrapper对象给出的就行
public interface GameQueryMapper extends BaseMapper<GameQuery> {
String querySql = "SELECT a.*, b.org_id FROM t_game AS a LEFT JOIN t_game_game_org AS b ON b.game_id = a.id ";
String wrapperSql = "SELECT * from ( " + querySql + " ) AS q ${ew.customSqlSegment}";
/**
* 分页查询
*/
@Select(wrapperSql)
Page<GameQuery> page(Page page, @Param("ew") Wrapper queryWrapper);
/**
* 普通查询
*/
@Select(wrapperSql)
List<GameQuery> list(@Param("ew") Wrapper queryWrapper);
/**
* 单独查询
*/
@Select(wrapperSql)
QyyOrgQuery one(@Param("ew") Wrapper queryWrapper);
}
我个人的项目中的实际应用
service接口的方法
service实现类
mapper接口