• 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

  • 相关阅读:
    软考系统架构之案例篇(软件工程相关概念)
    云原生系列三:K8s应用安全加固技术
    [Python进阶] 操纵鼠标:PyAutoGUI
    Linux-基础篇:虚拟机环境搭建
    Servlet规范之注解与可插拔性
    游戏开发丨基于Tkinter的五子棋小游戏
    在centos中注册gitlab runner
    VS Code 下载和安装教程
    MaxScale读写分离
    小米路由器如何设置去广告功能,如何设置小米路由器的自定义Hosts(小米路由器如何去除小米广告、去除小米电视盒子开屏广告、视频广告)
  • 原文地址:https://blog.csdn.net/m0_67402914/article/details/126035135