• 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

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    【腾讯云】打造未来智能应用的基石:腾讯混元大模型
    Git-01-基础使用
    iOS ------ ARC的工作原理
    轻松掌握视频制作技巧:批量分割长视频的详细步骤
    深入学习 Redis Sentinel - 基于 DockerCompose 编排哨兵分布式架构,理解工作原理
    Python绘图系统18:导入txt格式数据
    Linux工具(二)
    可视化服务编排在金融APP中的实践
    珠海希雷伺服全套(包含算法)方案
    Python绘图系统21:导出数据
  • 原文地址:https://blog.csdn.net/m0_54861649/article/details/126075451