广告位联系
返回顶部
分享到

mybatis-plus实现自定义SQL、多表查询与多表分页查询语句实例

java 来源:互联网 作者:佚名 发布时间:2022-09-20 08:33:22 人浏览
摘要

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

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

1、自定义SQL

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

1

2

3

4

5

@Repository

public interface EduTeacherMapper extends BaseMapper<EduTeacher> {

    @Select("select * from edu_teacher")

    EduTeacherMapper selectTeacherList();

}

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

1

2

3

4

5

6

7

8

9

10

@Service

public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {

 

    @Autowired

    private EduTeacherMapper teacherMapper;

 

    public EduTeacher selectTheacher(){

        return teacherMapper.selectTheacher();

    }

}

2、多表查询

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

1

2

3

4

5

@Repository

public interface EduTeacherMapper extends BaseMapper<EduTeacher> {

   @Select("SELECT * FROM edu_teacher t1 INNER JOIN edu_course t2 ON t1.id = t2.teacher_id")

   EduTeacherVo selectTheacher();

}

3、多表分页查询

分页查询的话就需要用到Page了

1、需要先创建一个配置类,然后在配置类中引入分页插件(固定代码)

1

2

3

4

5

6

7

8

9

10

@Configuration                 

public class MpConfig {

    /**

     * 分页插件

     */

    @Bean

    public PaginationInterceptor paginationInterceptor() {

        return new PaginationInterceptor();

    }

}

2、mapper代码如下:

1

2

3

4

public interface EduTeacherMapper extends BaseMapper<EduTeacher> {

    @Select("select * from edu_teacher")

    IPage<EduTeacher> selectTheacher(Page<EduTeacher> page);

}

3、serviceImpl实现类代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

@Service

public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {

 

    @Autowired

    private EduTeacherMapper teacherMapper;

 

    public void selectTheacher(){

        //1代表当前页数,10代表每页数据的数量

        Page<EduTeacher> page = new Page<>(1,10);

        IPage<EduTeacher> 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());    //总记录数

    }

}

4、多表分页条件查询

多表分页条件查询只是在多表分页查询的基础上增加了条件筛选而已

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

@Select("<script>

  SELECT t1.id,t1.qiye_id,t1.member_tag,t1.name,t1.logo,t1.images,t1.video,t1.contacts_mobile,t1.contacts_name,t1.address,t1.sort,t1.sort,t1.click_num,t1.is_put,t1.company_type,t1.is_attestation,t1.is_recommend,t1.introduce,t1.create_time,t2.laoa_product_type_id AS productId,t3.laoa_style_id AS styleId FROM laoa_ad_logistics t1 LEFT JOIN laoa_product_middle t2 ON t1.qiye_id = t2.company_key LEFT JOIN laoa_style_middle t3 ON t1.qiye_id = t3.company_key

  <where>

    t1.company_type = 1

    <if test="adLogisticsVo.isOk == true">

      AND t1.is_put = 1

    </if>

    <if test="adLogisticsVo.name != null">

      AND t1.name LIKE CONCAT('%',#{adLogisticsVo.name},'%')

    </if>

    <if test="adLogisticsVo.styleId != null">

      AND t3.laoa_style_id = #{adLogisticsVo.styleId}

    </if>

    <if test="adLogisticsVo.productId != null">

      AND t2.laoa_product_type_id = #{adLogisticsVo.productId}

    </if>

  </where>

  ORDER BY t1.sort

</script>")

IPage<AdLogisticsVo> selectAdLogisticsList(@Param("page") IPage<AdLogisticsVo> page, @Param("adLogisticsVo") AdLogisticsVo adLogisticsVo);


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/weixin_47316183/article/details/124585722
相关文章
  • SpringBoot自定义错误处理逻辑介绍

    SpringBoot自定义错误处理逻辑介绍
    1. 自定义错误页面 将自定义错误页面放在 templates 的 error 文件夹下,SpringBoot 精确匹配错误信息,使用 4xx.html 或者 5xx.html 页面可以打印错误
  • Java实现手写一个线程池的代码

    Java实现手写一个线程池的代码
    线程池技术想必大家都不陌生把,相信在平时的工作中没有少用,而且这也是面试频率非常高的一个知识点,那么大家知道它的实现原理和
  • Java实现断点续传功能的代码

    Java实现断点续传功能的代码
    题目实现:网络资源的断点续传功能。 二、解题思路 获取要下载的资源网址 显示网络资源的大小 上次读取到的字节位置以及未读取的字节
  • 你可知HashMap为什么是线程不安全的
    HashMap 的线程不安全 HashMap 的线程不安全主要体现在下面两个方面 在 jdk 1.7 中,当并发执行扩容操作时会造成环形链和数据丢失的情况 在
  • ArrayList的动态扩容机制的介绍

    ArrayList的动态扩容机制的介绍
    对于 ArrayList 的动态扩容机制想必大家都听说过,之前的文章中也谈到过,不过由于时间久远,早已忘却。 所以利用这篇文章做做笔记,加
  • JVM基础之字节码的增强技术介绍

    JVM基础之字节码的增强技术介绍
    字节码增强技术 在上文中,着重介绍了字节码的结构,这为我们了解字节码增强技术的实现打下了基础。字节码增强技术就是一类对现有字
  • Java中的字节码增强技术

    Java中的字节码增强技术
    1.字节码增强技术 字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。 参考地址 2.常见技术 技术分类 类
  • Redis BloomFilter布隆过滤器原理与实现

    Redis BloomFilter布隆过滤器原理与实现
    Bloom Filter 概念 布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射
  • Java C++算法题解leetcode801使序列递增的最小交换次

    Java C++算法题解leetcode801使序列递增的最小交换次
    题目要求 思路:状态机DP 实现一:状态机 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int minSwap(int[] nums1, int[] nums2) { int n
  • Mybatis结果集映射与生命周期介绍

    Mybatis结果集映射与生命周期介绍
    一、ResultMap结果集映射 1、设计思想 对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了 2、resultMap的应用场
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计