SpringBoot集成MyBatis-PlusDruid

news2024/9/25 9:27:45

目录

MyBatis-Plus简介 

实例演示

创建Springboot项目

初始化Springboot项目

添加关键依赖

application.properties添加相关配置

启动类

编写实体类

编写mapper接口

条件构造器

分页插件

自定义 SQL 映射


MyBatis-Plus简介 

MyBatis-Plus简介‌MyBatis-Plus‌(简称MP)是一个基于MyBatis的增强工具,旨在简化开发过程并提高开发效率。它通过在MyBatis的基础上进行增强,而不改变MyBatis的核心功能,来实现这一目标。MyBatis-Plus的愿景是成为MyBatis最好的搭档,通过提供一系列增强功能,如无侵入性、损耗小、强大的CRUD操作等,来优化开发者的使用体验。这些特性使得MyBatis-Plus成为许多开发者在简化数据库操作时的首选工具。

  • 无侵入性‌:MyBatis-Plus的增强功能不会对现有工程产生影响,保证了与原生MyBatis的兼容性,使得集成和使用变得非常简单。
  • 损耗小‌:启动时自动注入基本的CRUD操作,性能基本无损耗,直接面向对象操作,通过BaseMapper接口提供强大的CRUD操作能力,减少了开发者的编码工作量。
  • 强大的CRUD操作‌:内置通用Mapper、通用Service,通过少量配置即可实现单表大部分CRUD操作,拥有强大的条件构造器,满足各类使用需求,简化了简单的CRUD操作编写。

此外,MyBatis-Plus与Spring的整合也非常简单,只需要将MyBatis的依赖替换为MyBatis-Plus的依赖,并进行相应的配置,即可实现与Spring框架的无缝对接。这些特性共同使得MyBatis-Plus成为提升MyBatis使用体验的有效工具‌

实例演示

创建Springboot项目

初始化Springboot项目

添加关键依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!-- Druid依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>

application.properties添加相关配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456yt

logging.level.root=warn
logging.level.com.ktjiaoyu.mybatisplus.mapper=trace
logging.pattern.console=%p%m%n

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#初始化大小、最小、最大连接数
spring.datasource.druid.initial-size=3
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=10
#配置获取连接等待超时的时间
spring.datasource.druid.max-wait=60000
#监控后台账号和密码
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
#配置StatFilter
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000

启动类

添加@MapperScan注解,路径指向mapper接口的包路径

编写实体类

package com.ktjiaoyu.thymeleaf.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;

/**
 * 
 * @TableName sys_user
 */
@TableName(value ="sys_user")
@Data
public class User implements Serializable {
    /**
     * 编号
     */
    @TableId(type = IdType.AUTO)
    private Long usrId;

    /**
     * 姓名
     */
    private String usrName;

    /**
     * 密码
     */
    private String usrPassword;

    /**
     * 角色编号
     */
    private Long usrRoleId;

    /**
     * 状态
     */
    private Integer usrFlag;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        User other = (User) that;
        return (this.getUsrId() == null ? other.getUsrId() == null : this.getUsrId().equals(other.getUsrId()))
            && (this.getUsrName() == null ? other.getUsrName() == null : this.getUsrName().equals(other.getUsrName()))
            && (this.getUsrPassword() == null ? other.getUsrPassword() == null : this.getUsrPassword().equals(other.getUsrPassword()))
            && (this.getUsrRoleId() == null ? other.getUsrRoleId() == null : this.getUsrRoleId().equals(other.getUsrRoleId()))
            && (this.getUsrFlag() == null ? other.getUsrFlag() == null : this.getUsrFlag().equals(other.getUsrFlag()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getUsrId() == null) ? 0 : getUsrId().hashCode());
        result = prime * result + ((getUsrName() == null) ? 0 : getUsrName().hashCode());
        result = prime * result + ((getUsrPassword() == null) ? 0 : getUsrPassword().hashCode());
        result = prime * result + ((getUsrRoleId() == null) ? 0 : getUsrRoleId().hashCode());
        result = prime * result + ((getUsrFlag() == null) ? 0 : getUsrFlag().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", usrId=").append(usrId);
        sb.append(", usrName=").append(usrName);
        sb.append(", usrPassword=").append(usrPassword);
        sb.append(", usrRoleId=").append(usrRoleId);
        sb.append(", usrFlag=").append(usrFlag);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}

编写mapper接口

package com.ktjiaoyu.thymeleaf.mapper;

import com.ktjiaoyu.thymeleaf.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
* @author Administrator
* @description 针对表【sys_user】的数据库操作Mapper
* @createDate 2024-09-09 09:10:40
* @Entity com.ktjiaoyu.thymeleaf.entity.User
*/
public interface UserMapper extends BaseMapper<User> {

}




经过这样几个步骤我们就实现了CRUD的基本功能,最后我们来测试一下(利用Junit测试类)

    @Test
    public void testSelectById(){
        User user = userMapper.selectById(2L);
        System.out.println("usrName:" + user.getUsrName());
    }

测试结果:

以上是MyBatis-Plus的基本使用,其实它也还具备多数功能

条件构造器

MyBatis-Plus 提供了条件构造器 QueryWrapper 和 UpdateWrapper 用于构建复杂查询条件:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Tom"); // 等价于 SQL 的 `WHERE name = 'Tom'`
List<User> users = userMapper.selectList(queryWrapper);

分页插件

MyBatis-Plus 提供了分页插件,可以快速实现分页功能:

Page<User> page = new Page<>(1, 10); // 第1页,每页10条数据
Page<User> userPage = userMapper.selectPage(page, null);

自定义 SQL 映射

MyBatis-Plus 支持自定义 SQL 映射,可以方便地进行复杂查询:

@Select("SELECT * FROM user WHERE name = #{name}")
List<User> selectByName(@Param("name") String name);

以上是 MyBatis-Plus 的一些常用功能和使用方法,实际使用时需要根据具体需求选择合适的功能,并结合项目中的具体配置和实体类使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

铁威马秋季新品即将上线,你想要的NAS我都有!

各位铁粉们&#xff0c;注意啦&#xff01; 一场关于存储的饕餮盛宴即将拉开帷幕 铁威马&#xff0c;带着九款全新力作NAS 将于9月19日席卷全球市场 是的&#xff0c;你没听错 九款&#xff01; 从入门级到专业级 从桌面型到机架式 全系搭载TOS 6 总有一款能击中你的心…

PCI 9054应用总结

1 PCI配置空间 1.1 BAR大小的确定 Linux kernel读取PCI BARn表示的内存长度时&#xff0c;先直接读取BARn的值&#xff0c;这个就是地址&#xff0c;然后再向BARn写入0xffff,ffff&#xff0c;再读取BARn的值就是需要的内存长度&#xff08;忽略bit3到bit0的处理&#xff09;&a…

微波无源器件 3 一种用于Ka频带双极化波束形成网络的双模三路功分器

摘要&#xff1a; 本文给出了一种用于Ka频带的双极化工作的双模3路功分器的设计和性能。对有着三个输出端口的平衡地很好的功分的TE10和TE01模式和27.5-30GHz上优于-23dB的输入匹配可以获得相似的性能。与双模定向耦合器相连结&#xff0c;此三路功分器对于双极化波束形成网络具…

【Go】Go语言介绍与开发环境搭建

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Qt篇——Qt获取Windows电脑上所有外接设备的名称、物理端口位置等信息

我之前有发过一篇文章《Qt篇——获取Windows系统上插入的串口设备的物理序号》&#xff0c;文章中主要获取的是插入的USB串口设备的物理序号&#xff1b;而本篇文章则进行拓展&#xff0c;可以获取所有外接设备的相关信息&#xff08;比如USB摄像头、USB蓝牙、USB网卡、其它一些…

膨胀腐蚀操作opencv dilate膨胀白膨胀,erode腐蚀是黑吃白。主要针对二值图

效果&#xff1a; 代码&#xff1a; import cv2 import numpy as np from matplotlib import pyplot as pltif __name__ "__main__":h 10w 10data np.random.normal(0, 1, [h, w]) # sigma, 2*sigma, 3*sigma之间的数的比例分别为0.68&#xff0c; 0.96&#…

甲骨文新财报云基建营收同比增长45%,与亚马逊AWS合作,盘后涨超9%

KlipC报道&#xff1a;当地时间9月9日&#xff0c;数据库软件与云服务龙头甲骨文发布截止8月份的2025财年第一财季财报&#xff0c;财报显示&#xff0c;营业收入133亿美元&#xff0c;同比增长7%&#xff1b;净利润 29.29 亿美元&#xff0c;同比增长21.03%。盘后大涨超9%。 …

C++ 第一阶段(基础语法)

c初识 创建项目 编写“HelloWorld”代码 #include <iostream> using namespace std; int main() {cout << "Hello World!\n"; }注释 单行注释 //表述信息 多行注释 /*表述信息*/ 变量 作用:给一段指定的内存空间起名&#xff0c;方便操作这段内存 语…

Tensorflow2如何读取自制数据集并训练模型?-- Tensorflow自学笔记13

一. 如何自制数据集&#xff1f; 1. 目录结构 以下是自制数据集-手写数字集, 保存在目录 mnist_image_label 下 2. 数据存储格式 2.1. 目录mnist_train_jpeg_60000 下存放的是 60000张用于测试的手写数字 如 : 0_5.jpg, 表示编号为0&#xff0c;标签为5的图片 6_1.jpg, 表示…

DGV结构变异数据库下载及bedToBigBed+bigBedToBed转换

DGV结构变异数据库通常用来过滤检测的CNV、Indels等结构变异信息&#xff0c;以达到去除假阳性的目的。 下载的bedToBigBed和bigBedToBed为二进制程序&#xff0c;已编译好&#xff0c;可以直接使用。 1. 基础软件和文件下载 # bedToBigBed下载 wget http://hgdownload.soe.…

PMP--一、二、三模--分类--14.敏捷--技巧--DoDDoR

文章目录 技巧DoD&DoR 二模14.敏捷--术语表--完成的定义DoD--Definition of Done--是指一个项目什么时候可以被认为是“完成”的标准&#xff0c;它可以包括各种质量和功能的具体要求。--它是团队需要满足的所有标准的核对单&#xff0c;只有可交付成果满足该核对单才能视为…

OPENAIGC开发者大赛企业组特等奖 | 集思科技-大品牌的AI直播团队产品提供商

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…

基于java+SpringBoot+Vue的教师工作量管理系统设计与实现

基于javaSpringBootVue的教师工作量管理系统设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台展示 前台展示模块主要面向教师用户&#xff0c;提供个人中心、课程信息管理、工作量管理等功能。教师可以查看自己…

如何更改磁盘卷标名称?

磁盘卷标&#xff08;Volume Label&#xff09;是用来标识和管理磁盘驱动器的名称&#xff0c;通常在文件资源管理器中显示。卷标有助于用户快速识别和区分不同的磁盘或分区。 为什么要更改磁盘卷标名称&#xff1f; 磁盘卷标作为磁盘的名字&#xff0c;可以帮助用户更容易地识…

YOLOv8改进 | 模块缝合 | C2f 融合RVB + EMA注意力机制【二次融合 + 结构图】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

我用「天工」给80后大叔做了节 AI 启蒙课

接连两天都是乌蒙蒙的&#xff0c;时不时也会下点淅淅沥沥的小雨。 一个十分要好的80后大叔频繁与我诉苦&#xff0c;最近他感觉要失业了&#xff0c;由于他所处的行业不景气&#xff0c;公司的业务频频下滑&#xff0c;这已经是半年里的第二次降薪了&#xff0c;很焦虑&#…

bat批处理无法显示中文或中文乱码解决办法

在BAT脚本中出现乱码的原因可能有以下几种情况&#xff1a; 编码格式错误&#xff1a;如果脚本文件的编码格式与操作系统或文本编辑器不兼容&#xff0c;就会导致乱码。可以尝试将脚本文件的编码格式改为ANSI、UTF-8或UTF-8 with BOM格式&#xff0c;然后重新保存并运行。假设…

解决Intel AC3160无线网卡 WIN11系统无法连接WIFI6路由器问题

这个网卡比较老了&#xff0c;支持不了wifi6的路由器&#xff0c;win7官方驱动没有更新到可以支持wifi6路由器的&#xff0c;导致有些网络搜索不到。所以要自己去更新驱动 驱动地址&#xff1a;https://driverpack.io/zh-cn/devices/wifi/intel/intel-r-dual-band-wireless-ac…

充分利用您的注册表单

建立受众群体一直是企业发展的重要组成部分&#xff0c;但近年来&#xff0c;如何通过定期发送内容邮件来保持受众的参与变得愈加重要。 在你开始为那个私人频道策划内容之前&#xff0c;需要让客户注册并同意深化你们之间的关系&#xff0c;这时注册表单优化就变得至关重要。…

LINUX操作基础+LINUX系统的文件操作命令

1、使用shutdown命令设定在800分钟之后关闭计算机。 sudo shutdown 800 2、分别使用命令man和help查看ls命令的帮助文档。 man ls ls --help 3、使用命令将当前计算机的主机名显示为IT。 sudo hostname IT 4、使用命令显示公元2024年8月的月历。 cal 08 2024 5、显示当前计…