• mybatis-plus实现自定义SQL、多表查询、多表分页查询


    前言

    本文介绍了在mybatis-plus中如何实现:自定义SQL语句,多表查询语句,多表分页查询语句

    在说怎么实现之前我们要先明白一个概念,就是mybatis-plus是在mybatis的基础上进行增强,并不做改变,所以mybatis的操作在mybatis-plus中也是一样可以使用的,咱们直接上代码

    文章目录


    1、自定义SQL

    在mapper中自定义一个方法即可

    @Repository
    public interface EduTeacherMapper extends BaseMapper {
        @Select("select * from edu_teacher")
        EduTeacherMapper selectTeacherList();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后要调用该方法的话,通过注入mapper,然后通过mapper调用方法即可

    @Service
    public class EduTeacherServiceImpl extends ServiceImpl implements EduTeacherService {
    
        @Autowired
        private EduTeacherMapper teacherMapper;
    
        public EduTeacher selectTheacher(){
            return teacherMapper.selectTheacher();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、多表查询

    多表查询和自定义SQL是一样写的,唯一区别就是需要创建一个 vo类来接收数据即可。

    @Repository
    public interface EduTeacherMapper extends BaseMapper {
       @Select("SELECT * FROM edu_teacher t1 INNER JOIN edu_course t2 ON t1.id = t2.teacher_id")
       EduTeacherVo selectTheacher();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、多表分页查询

    分页查询的话就需要用到Page了
    1、需要先创建一个配置类,然后在配置类中引入分页插件(固定代码)

    @Configuration                  
    public class MpConfig {
        /**
         * 分页插件
         */
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、mapper代码如下:

    public interface EduTeacherMapper extends BaseMapper {
        @Select("select * from edu_teacher")
        IPage selectTheacher(Page page);
    }
    
    • 1
    • 2
    • 3
    • 4

    3、serviceImpl实现类代码如下:

    @Service
    public class EduTeacherServiceImpl extends ServiceImpl 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());    //总记录数
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4、多表分页条件查询

    多表分页条件查询只是在多表分页查询的基础上增加了条件筛选而已
    其它步骤都和多表分页查询一样,只要在mapper中写sql的时候多加条件参数就可以了。注意:如果使用了动态SQL,那么该sql语句一定要使用script标签包裹

    @Select("")
    IPage selectAdLogisticsList(@Param("page") IPage page, @Param("adLogisticsVo") AdLogisticsVo adLogisticsVo);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

  • 相关阅读:
    java源码系列:LinkedList的底层实现原理和特性
    “轻松实现Linux和Windows文件共享,只需几步配置!“
    JavaEE——Http请求和响应,https的加密
    大二Web课程设计——张家界旅游网站设计与实现(HTML+CSS+JavaScript)
    基于window10的远程桌面报错:要求的函数不受支持 的问题解决方法
    网络-WebSocket
    (vue)el-select根据下拉框显示隐藏的visible-change的事件使用
    计算机视觉顶会顶刊
    集合-ArrayList源码分析(面试)
    手把手教你安装Android Studio并附上常见安装问题
  • 原文地址:https://blog.csdn.net/m0_67402914/article/details/126035135