返回顶部
首页 > 资讯 > 后端开发 > JAVA >MybatisPlus(2)
  • 640
分享到

MybatisPlus(2)

springjavaspringboot后端mysqlmybatis 2023-09-12 13:09:24 640人浏览 独家记忆
摘要

 前言🍭 ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客  上篇我们简单介绍了mybatis

 前言🍭

❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️

Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客

 上篇我们简单介绍了mybatisPlus的方便之处,这篇来深入了解MybatisPlus的其他功能。

一、标准分页功能制作🍭

MyBatis-Plus提供了方便易用的标准分页功能,可以轻松实现分页查询。

1、实现分页功能🍉

在上篇我们简单介绍了 一些MybatisPlus带来的简单方法,现在来看看它所带来的分页功能是如何实现的。

可以看到这个函数需要一个page参数。

> E selectPage(E page, @Param("ew") Wrapper queryWrapper);

点进源码发现这是一个IPage(这是一个接口)的对象,我们就给它一个对应的对象。

@Test    void testGetByPage(){        IPage page=new Page(1,1);//第一个参数表示第几页,第二个参数表示一页多少条        userDao.selectPage(page,null);        System.out.println("当前页码值:"+page.getCurrent());        System.out.println("每页显示数:"+page.getSize());        System.out.println("一共多少页:"+page.getPages());        System.out.println("每页显示数:"+page.getTotal());        System.out.println("数据:"+page.getRecords());    }

 运行测试代码:

 我们可以发现这其中多少页、多少条并没有准确显示,而且看数据它将所有数据都查出来了,这就是简单的查询所有数据。为什么会这样?因为还没有设置完全,需要给分页功能添加拦截器才可以使用。

2、分页拦截器🍉

实现这个分页功能需要配置MybatisPlus分页拦截器,如果那个类需要使用这个分页功能则需要加入到拦截器中。那我们来实现一下:

package com.example.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class MpConfig {    @Bean    public MybatisPlusInterceptor mpInterceptor(){        //1.定义Mp拦截器        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();        //2.添加具体的拦截器        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());        return mpInterceptor;    }}

随便配置打印 MyBatis-plus 执行的 sql

mybatis-plus:  mapper-locations: classpath:mapper/*Mapper.xml  configuration: # 配置打印 MyBatis-plus 执行的 SQL    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

然后再次运行代码

我们可以发现所有数据都正确显示了,查询的数据也只有一条,然后再看SQL语句,我们查询第二页再看一下:

可以发现查询第一页和第二页的SQL语句不太一样,有两个参数,MybatisPlus这也太智能了吧,这也让我们的分页操作十分简单了。

二、加快控制台运行速率🍭

1、不打印日志🍉

创建一个logback.xml,可以让控制台的日志打印消失。

未添加xml前: 

添加后: 

 2、不打印Spring图标和MyBatisPlus图标🍉

分别给mybatic-plus和Spring设置banner属性:

# 配置数据库的连接字符串spring:  datasource:    url: jdbc:Mysql://127.0.0.1:3306/ku2022?characterEncoding=utf8    username: root    passWord: "123456"    driver-class-name: com.mysql.cj.jdbc.Driver  main:    banner-mode: off #不显示loGomybatis-plus:  mapper-locations: classpath:mapper/*Mapper.xml  configuration: # 配置打印 MyBatis-plus 执行的 SQL    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  global-config:    banner: false #不显示logo

 运行测试代码,发现只有SQL信息和打印信息:

三、条件查询的三种语句🍭

MyBatisPlus将书写复杂的SOL查询条件进行了封装,使用编程的形式完成查询条件的组合。

可以看到大部分select语句都有一个相同的Wrapper接口,这些Wrapper接口就是用来封装查询操作的。

1、按条件查询🍉

现在数据库中有三个用户,我们去查询出age小于18的用户。

测试代码: 

@Test    void textGetAll() {        //方式一:按条件查询        QueryWrapper qw=new QueryWrapper<>();//这里的泛型指不指点都可以        qw.lt("age",18);//lt是表示小于        List list=userDao.selectList(qw);        System.out.println(list);    }

运行: 

2、lambda格式表达式(推荐)🍉

Ⅰ、第一种🍓

我们现在使用lambda表达式的方式去查询age小于20的用户

@Test    void textGetAll() {        //方式二:lambda格式按条件查询        QueryWrapper qw = new QueryWrapper<>();//这里的泛型必须指点,不然下面User::getAge会报错        qw.lambda().lt(User::getAge, 20);        List userList = userDao.selectList(qw);        System.out.println(userList);    }

运行:

Ⅱ、 第二种🍓

这是另一种lambda表达式的方式,这也是比较常用的一种方法了。

    @Test    void textGetAll() {        //方式三:lambda格式按条件查询        LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();        lqw.lt(User::getAge, 25);        List userList = userDao.selectList(lqw);        System.out.println(userList);    }

3、查询大于10小于22的数据🍉

Ⅰ、正常查询🍓

    @Test    void textGetAll() {        //方式三:lambda格式按条件查询        LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();        lqw.gt(User::getAge,10);        lqw.lt(User::getAge, 22);        List userList = userDao.selectList(lqw);        System.out.println(userList);    }

Ⅱ、组合查询条件(链式编程格式)🍓

并且 (and)🍒

    @Test    void textGetAll() {        //方式三:lambda格式按条件查询        LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();        lqw.lt(User::getAge,23).ge(User::getAge,10);        List userList = userDao.selectList(lqw);        System.out.println(userList);    }

或者 (or)🍒

    @Test    void textGetAll() {        //方式三:lambda格式按条件查询        LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();        lqw.lt(User::getAge,22).or().ge(User::getAge,10);        List userList = userDao.selectList(lqw);        System.out.println(userList);    }

 四、条件查询null判定🍭

当我们需要判断一个值是否为null时,我们一般使用if语句进行判断,而在MybatisPlus中有更好的方法。

UserQuery类

package com.example.domain;import lombok.Data;@Datapublic class UserQuery extends User{    private Integer age2;}

一般情况使用if:

@Test    void textGetAll() {        UserQuery uq=new UserQuery();        uq.setAge(18);        uq.setAge2(20);        LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();        if (null!=uq.getAge2()){            lqw.gt(User::getAge,uq.getAge2());        }        if (null!=uq.getAge()){            lqw.lt(User::getAge,uq.getAge());        }        List userList = userDao.selectList(lqw);        System.out.println(userList);    }

但这样十分麻烦,而MybatisPlus给我们提供了更好的方法。

@Test    void textGetAll() {        UserQuery uq=new UserQuery();        uq.setAge2(20);        LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();        //判断是否为null        lqw.gt(null!=uq.getAge2(),User::getAge,uq.getAge2());        lqw.lt(null!=uq.getAge(),User::getAge,uq.getAge());        List userList = userDao.selectList(lqw);        System.out.println(userList);    }

运行: 

来源地址:https://blog.csdn.net/m0_63951142/article/details/132492889

--结束END--

本文标题: MybatisPlus(2)

本文链接: https://lsjlt.com/news/404587.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MybatisPlus(2)
     前言🍭 ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客  上篇我们简单介绍了Mybatis...
    99+
    2023-09-12
    spring java spring boot 后端 mysql mybatis
  • SpringBoot与MybatisPlus MybatisPlus
    一、MyBatisPlus概述 MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。 MyBatisPlus的愿景是成为MyBatis最好的搭档,就...
    99+
    2023-09-10
    spring boot mybatis java mysql
  • MyBatisPlus总结
    目录 MyBatisPlus MP特点 MP框架结构 MP使用准备 导入依赖 springboot整合mybatisplus配置文件 定义好实体类User后编辑mapper接口 @Mapper与@MapperScan("包名")区别 MP基...
    99+
    2023-10-18
    java mysql spring
  • SpringBoot整合MybatisPlus
    文章目录 前言一、MybatisPlus是什么?二、使用步骤1.导入依赖2.编写配置文件3.编写Controller和实体类4.编写持久层接口mapper5.启动类加包扫描注解6.测试 总...
    99+
    2023-10-02
    spring boot mybatis java
  • SpringBoot与MybatisPlus SpringBoot
    一、SpringBoot介绍 1.1 Spring缺点分析 Spring是一个非常优秀的轻量级框架,以IOC(控制反转)和AOP(面向切面)为思想内核,极大简化了JAVA企业级项目的开发。 虽然Spring的组件代码是轻量级的,但它的配置...
    99+
    2023-10-21
    springboot java mybatis spring intellij-idea
  • mybatisplus实现排序
    MybatisPlus 支持使用 lambda 表达式进行排序。可以在查询条件中使用 orderBy、orderByAsc、orderByDesc 方法来设置排序字段和排序顺序。 例如,要将查询结果按照 age 字段升序排序,可以使用如...
    99+
    2023-09-04
    java mybatis mysql 开发语言 数据库
  • MyBatisPlus 批量添加
    文章目录 现状优化效果报错 现状 一般来说,批量插入可以使用 MyBatisPlus 中 ServiceImpl 自带的方法 saveBatch 打开 sql 日志,application.yml 添加配置,mapper-lo...
    99+
    2023-08-19
    mybatis java spring boot
  • SpringBoot+MybatisPlus+Mysql+JSP实战
    本文主要介绍了SpringBoot+MybatisPlus+Mysql+JSP实战,分享给大家,具体如下: 放个效果图: 准备项目 首先在MySql控制台输入一下sql语句创建student 数据库和student...
    99+
    2022-05-25
    SpringBoot MybatisPlus Mysql JSP
  • 如何搭建boot+MybatisPlus
    这篇文章主要介绍如何搭建boot+MybatisPlus,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.准备工作1.1 创建数据库表创建表CREATE  TABLE `login`(&...
    99+
    2023-06-29
  • 【mybatis和mybatisplus的区别】
    MyBatis 和 MyBatis Plus 都是 Java 语言的持久层框架,但它们之间有以下几个区别: 功能特性: MyBatis 是一个基于 XML 配置文件和 SQL 语句的 ORM 框架,提...
    99+
    2023-09-07
    mybatis java
  • SpringBoot整合MyBatisPlus详解
    目录1.什么是springboot自动装配?2.springboot注解:3.springboot整合mybatisplus实现增删改查1.什么是springboot自动装配? 自动...
    99+
    2023-05-16
    Java SpringBoot SpringBoot整合MyBatisPlus
  • MybatisPlus之likeRight的用法
    目录关于likeRight的用法使用like与likeright方法查询信息的踩坑案例关于likeRight的用法 在使用Mybatis-plus的时候,使用like方法发现匹配的方...
    99+
    2024-04-02
  • mybatisplus的坑怎么解决
    这篇文章主要讲解了“mybatisplus的坑怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatisplus的坑怎么解决”吧!mybatisplus的坑 insert标签ins...
    99+
    2023-06-21
  • MybatisPlus之likeRight怎么使用
    这篇文章主要介绍“MybatisPlus之likeRight怎么使用”,在日常操作中,相信很多人在MybatisPlus之likeRight怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis...
    99+
    2023-07-02
  • MybatisPlus多表连接查询
    mybatis-plus作为mybatis的增强工具,它的出现极大的简化了开发中的数据库操作,但是长久以来,它的联表查询能力一直被大家所诟病。一旦遇到left join或right join的左右连接,你还是得老老实实的打开xml文件,手写...
    99+
    2023-08-16
    mybatis java mysql
  • mybatisPlus自定义拦截器
    mybatisPlus自定义拦截器 一开始数据库的数据是明文存储,后面某些数据需要变成密文保存在数据库,而且密文的字段在很多数据表中都存在。进行select操作时,把密文查询出来并转成明文。 1、使用切面,当接口获取到数据后,遍历...
    99+
    2023-08-18
    sql 数据库 mysql
  • MybatisPlus多表连表查询
    最近发现一个好玩的框架,我们知道mybatis-plus在连表查询上是不行的,如果需要连表查询,那么我们就得乖乖的去写xml文件了,但是今天发现一个新的框架 mybatis-plus-join。它既包含了mybatis-plus的所有优点,...
    99+
    2023-08-17
    mybatis java mysql
  • mybatisplus中wrapper怎么使用
    MyBatis Plus中的Wrapper是用于构建条件查询的工具类。可以通过Wrapper类来构建SQL的WHERE条件。...
    99+
    2023-10-26
    mybatisplus
  • 2.LinkedBlockingQueue
    原文:https://www.cnblogs.com/johnzhao/p/14635118.html...
    99+
    2022-02-24
    2.LinkedBlockingQueue 数据库入门 数据库基础教程
  • HTML(2)
      1.a标签的补充     (1)超链接       href:超链接的地址       target; _self 默认在当前页面中打开链接地址         _blank 在空白页中打开链接地址 <!DOCTYPE...
    99+
    2023-01-30
    HTML
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作