本文介绍了在mybatis-plus中如何实现:自定义SQL语句,多表查询语句,多表分页查询语句
在说怎么实现之前我们要先明白一个概念,就是mybatis-plus是在mybatis的基础上进行增强,并不做改变,所以mybatis的操作在mybatis-plus中也是一样可以使用的,咱们直接上代码
- 前言
- 1、自定义SQL
- 2、多表查询
- 3、多表分页查询
- 4、多表分页条件查询
1、自定义SQL
在mapper中自定义一个方法即可
@Repository public interface UserMapper extends BaseMapper{ @Select("select * from edu_teacher") EduTeacherMapper selectUserList(); }
然后要调用该方法的话,通过注入mapper,然后通过mapper调用方法即可
@Service public class EduTeacherServiceImpl extends ServiceImpl2、多表查询implements EduTeacherService { @Autowired private EduTeacherMapper teacherMapper; public EduTeacher selectTheacher(){ return teacherMapper.selectTheacher(); } }
多表查询和自定义SQL是一样写的,唯一区别就是需要创建一个 vo类来接收数据即可。
@Repository public interface EduTeacherMapper extends BaseMapper3、多表分页查询{ @Select("SELECT * FROM edu_teacher t1 INNER JOIN edu_course t2 ON t1.id = t2.teacher_id") EduTeacherVo selectTheacher(); }
分页查询的话就需要用到Page了
1、需要先创建一个配置类,然后在配置类中引入分页插件(固定代码)
@Configuration
public class MpConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2、mapper代码如下:
public interface EduTeacherMapper extends BaseMapper{ @Select("select * from edu_teacher") IPage selectTheacher(Page page); }
3、serviceImpl实现类代码如下:
@Service public class EduTeacherServiceImpl extends ServiceImpl4、多表分页条件查询implements EduTeacherService { @Autowired private EduTeacherMapper teacherMapper; public void selectTheacher(){ //1代表当前页数,10代表每页数据的数量 Page page = new Page<>(1,10); IPage eduTeacherIPage = teacherMapper.selectTheacher(page); System.out.println(eduTeacherIPage.getCurrent()); //当前页 System.out.println(eduTeacherIPage.getPages()); //每页数据 是一个List集合 System.out.println(eduTeacherIPage.getSize()); //每页显示记录数 System.out.println(eduTeacherIPage.getTotal()); //总记录数 } }
多表分页条件查询只是在多表分页查询的基础上增加了条件筛选而已
其它步骤都和多表分页查询一样,只要在mapper中写sql的时候多加条件参数就可以了。注意:如果使用了动态SQL,那么该sql语句一定要使用script标签包裹
@Select("")
IPage selectAdLogisticsList(@Param("page") IPage page, @Param("adLogisticsVo") AdLogisticsVo adLogisticsVo);



