MyBatisPlus入门介绍

news2024/11/18 0:26:13

目录

一、MyBatisPlus介绍

润物无声

效率至上

丰富功能

二、Spring集成MyBatisPlus

三、SpringBoot集成MyBatisPlus


一、MyBatisPlus介绍

MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatisPlus的愿景是成为MyBatis最好的搭档。

官方网址:https://baomidou.com/

下面就是官网的三大小点的介绍了

润物无声

只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。

效率至上

只需简单配置,即可快速进行单表 CRUD 操作,从而节省大量时间。

丰富功能

代码生成、自动分页、逻辑删除、自动填充等功能一应俱全。

以及一些其他的

苞米豆生态圈

  • MybatisX (opens new window)- 一款全免费且强大的 IDEA 插件,支持跳转,自动补全生成 SQL,代码生成。
  • Mybatis-Mate (opens new window)- 为 MyBatis-Plus 企业级模块,支持分库分表、数据审计、字段加密、数据绑定、数据权限、表结构自动生成 SQL 维护等高级特性。
  • Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。
  • Shuan (opens new window)- 基于 Pac4J-JWT 的 WEB 安全组件, 快速集成。
  • Kisso (opens new window)- 基于 Cookie 的单点登录组件。
  • Lock4j (opens new window)- 基于 SpringBoot 同时支持 RedisTemplate、Redission、Zookeeper 的分布式锁组件。
  • Kaptcha (opens new window)- 基于 SpringBoot 和 Google Kaptcha 的简单验证码组件,简单验证码就选它。
  • Aizuda 爱组搭 (opens new window)- 低代码开发平台组件库。

二、Spring集成MyBatisPlus

MyBatisPlus官方推荐在SpringBoot工程中使用,Spring工程也可以使用MyBatisPlus,首先我们在Spring中使用MyBatisPlus。
1. 在Mysql中准备数据:

DROP DATABASE IF EXISTS `school`;

CREATE DATABASE `school`;

USE `school`;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
`gender` varchar(255) DEFAULT NULL,
 `age` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

创建Maven项目,引入依赖

<dependencies>
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.4.2</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>
        <!-- spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.3.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.9</version>
        </dependency>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
    </dependencies>

创建实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private Integer id;
    private String name;
    private String email;
    private String gender;
    private Integer age;
}

创建Mapper接口。
使用MyBatis时,在编写Mapper接口后,需要手动编写CRUD方法,并需要在Mapper映射文件中手动编写每个方法对应的SQL语句。而在MyBatisPlus中,只需要创建Mapper接口并继承
BaseMapper,此时该接口获得常用增删改查功能,不需要自己手动编写Mapper配置文件

public interface StudentMapper extends
BaseMapper<Student> {
}

创建Spring配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="
                    http://www.springframework.org/schema/context
                    http://www.springframework.org/schema/context/spring-context.xsd
                    http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!-- 数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="root"/>
        <property name="password" value="666666"/>
        <property name="url" value="jdbc:mysql:///school"/>
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    </bean>
    
    <!-- Mybatis-Plus提供SqlSessionFactory对象 -->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 自动扫描所有mapper接口,将mapper接口生成代理注入spring -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
          p:basePackage="com.example.mpdemo1.mapper"
          p:sqlSessionFactoryBeanName="sqlSessionFactory"/>

</beans>

测试Mapper方法

import com.example.mpdemo1.pojo.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class MpTest {
    @Autowired
    private StudentMapper studentMapper;

    @Test
    public void testFindAll(){
        Student students = studentMapper.selectById(3);
        System.out.println(students);
    }
}

测试结果: 

OK,和数据库一模一样。

三、SpringBoot集成MyBatisPlus

接下来我们在SpringBoot项目中使用MyBatisPlus

创建SpringBoot项目,添加MyBatisPlus起步依赖

    <dependencies>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

在SpringBoot配置文件中配置数据源

# 配置数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///school?serverTimezone=UTC
    username: root
    password: 666666

 创建实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private Integer id;
    private String name;
    private String email;
    private String gender;
    private Integer age;
}

创建Mapper接口。
同样使用MyBatisPlus时,在编写Mapper接口后,不需要手动编写CRUD方法,并不需要在Mapper映射文件中手动编写每个方法对应的SQL语句。因此MyBatisPlus中,只需要创建Mapper接口并继承BaseMapper,此时该接口获得常用增删改查功能,不需要自己手动编写Mapper配置文件

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mpdemo2.pojo.Student;

public interface StudentMapper extends BaseMapper<Student> {
}

在 SpringBoot启动类中添加  @MapperScan 注解,扫描Mapper文件夹

@MapperScan("com.example.mpdemo2.mapper")

测试Mapper方法

@SpringBootTest
class Mpdemo2ApplicationTests {

    @Autowired
    private StudentMapper studentMapper;

    @Test
    public void testFind() {
        Student student = studentMapper.selectById(1);
        System.out.println(student);
    }
}

看运行结果已经非常明了。 

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

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

相关文章

单调栈 模板

class Solution { public: //从后往前的方法 vector<int> dailyTemperatures(vector<int>& temperatures) {int n temperatures.size();vector<int> ans(n);//创建一个大小为n的数组stack<int> st;//这个时候栈中没有任何元素for(int i n-1;i &g…

存算一体还是存算分离?谈谈数据库基础设施的架构选择

从一则用户案例说起 某金融用户问&#xff0c;数据库用服务器本地盘性能好还是外置存储好&#xff1f;直觉上&#xff0c;本地盘路径短性能应该更好。然而测试结果却出乎意料&#xff1a;同等中等并发压力&#xff0c;混合随机读写模型&#xff0c;服务器本地SSD盘合计4万 IOPS…

Spring Boot配置文件 Spring日志文件相关的知识

在上文中&#xff0c;小编带领大家创建了一个Spring Boot项目&#xff0c;并且成功的执行了第一个SPring Boot项目&#xff08;在网页上运行hello world&#xff09; 那么&#xff0c;本文的主要作用便是带领大家走进&#xff1a;Spring Boot配置文件 && Spring日志文件…

图书管理系统源码,图书管理系统开发,图书借阅系统源码三框架设计原理和说明

TuShuManger项目简介和创建 这里一共设计了6个项目,主要是借助三层架构思想分别设计了主要的三层,包括model实体层,Dal数据库操作层,Bll业务调用层,其他有公共使用项目common层,DButitly提取出来的数据库访问层,下面我们分别创建每个项目和开始搭建整个过程 TuShuManger…

STK Components 基础篇

1.开发包 STK Components 访问AGI官网&#xff0c;注册并登录后&#xff0c;从官网下载开发包&#xff1a;https://support.agi.com/downloads/&#xff0c;下载成功后可以申请许可证&#xff0c;AGI会向你注册的邮箱地址发送有效期半年的使用授权许可文件&#xff08;lic文件…

ubuntu+Teslav100 环境配置

系统基本信息 nvidia-smi’ nvidia-smi 470.182.03 driver version:470.182.03 cuda version: 11.4 产看系统体系结构 uname -aUTC 2023 x86_64 x86_64 x86_64 GNU/Linux 下载miniconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CM&OA https://mi…

Co-DETR:DETRs与协同混合分配训练代码学习笔记

关于论文的学习笔记&#xff1a;Co-DETR:DETRs与协同混合分配训练论文学习笔记-CSDN博客 作者提出了一种新的协同混合任务训练方案&#xff0c;即Co-DETR&#xff0c;以从多种标签分配方式中学习更高效的基于detr的检测器。这种新的训练方案通过训练ATSS和Faster RCNN等一对多标…

机器学习实战第2天:幸存者预测任务

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 ​ 文章目录 一.任务描述 二.数据集描述 三.主要代码 &#xff08;1&#xff09;主要代码库的说明与导入方法 &#xff08;2&#xff09;数据预处…

4面试题--数据库(mysql)

执⾏⼀条 select / update 语句&#xff0c;在 MySQL 中发⽣了什么&#xff1f; Server 层负责建⽴连接、分析和执⾏ SQL。MySQL ⼤多数的核⼼功能模块都在这实现&#xff0c;主要包括 连接器&#xff0c;查询缓存&#xff08;8.0版本去除&#xff0c;因为每次更新将会清空该…

macos安装小软件 cmake

一&#xff0c;cmake下载主页 Download CMake 二&#xff0c;下载&#xff0c;解压&#xff0c;配置&#xff0c;编译&#xff0c;安装 0. 假设macos中已经存在了 clang和make工具 1. 通过网页下载最新的稳定版 cmake***.tar.gz 源代码 2. tar zxf cmake***.tar 3. cd cmake***…

最详细手把手教你安装 Git + TortoiseGit 及使用

软件下载 从 Git 官网 下载 Git 安装程序&#xff0c;点击 Download for Windows&#xff1a; 点击下载 64-bit Git for Windows Setup: Git for Windows Setup 为安装版本&#xff0c;建议选择此版本Git for Windows Portable 为绿色免安装版本 从 TortoiseGit 官网 下载 T…

Echarts 创建饼状图-入门实例

安装 npm install echartsmain.js 引入 import *as echarts from echarts Vue.prototype.$echarts echarts定义容器 <div ref"myChart" style"width: 500px; height: 500px;"></div>option 为配置项 成品 <script>export default {na…

论文阅读——MCAN(cvpr2019)

补充一下MCAN-VQA&#xff1a; 对图片的处理&#xff1a;首先输入图片到Faster R-CNN&#xff0c;会先设定一个判断是否检测到物体的阈值&#xff0c;这样动态的生成m∈[10,100]个目标&#xff0c;然后从检测到的对应的区域通过平均池化提取特征。第i个物体特征表示为&#xff…

Transformer——decoder

上一篇文章&#xff0c;我们介绍了encoder&#xff0c;这篇文章我们将要介绍decoder Transformer-encoder decoder结构&#xff1a; 如果看过上一篇文章的同学&#xff0c;肯定对decoder的结构不陌生&#xff0c;从上面框中可以明显的看出&#xff1a; 每个Decoder Block有两个…

84基于matlab的数字图像处理

基于matlab的数字图像处理&#xff0c;数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 84matlab数字图像处理图像增强 (xiaohongshu.com)https://www.xiaohongshu.com/explore/656219d80000000032034dea

微机原理_4

一、单项选择题&#xff08;本大题共 15 小题&#xff0c;每小题 3 分&#xff0c;共 45 分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;请将选定的答案填涂在答题纸的相应位置上。) 1在产品研制的过程中,通常采用( )类型的存储芯片来存放待调试的…

发布鸿蒙的第一个java应用

1.下载和安装华为自己的app开发软件DevEco Studio HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 2.打开IDE新建工程&#xff08;当前用的IDEA 3.1.1 Release&#xff09; 选择第一个&#xff0c;其他的默认只能用(API9)版本&#xff0c;搞了半天才发现8&#xff…

Linux加强篇006-存储结构与管理硬盘

目录 前言 1. 从“/”开始 2. 物理设备命名规则 3. 文件系统与数据资料 4. 挂载硬件设备 5. 添加硬盘设备 6. 添加交换分区 7. 磁盘容量配额 8. VDO虚拟数据优化 9. 软硬方式链接 前言 悟已往之不谏&#xff0c;知来者之可追。实迷途其未远&#xff0c;觉今是而昨非…

WPF绘图技术介绍

作者&#xff1a;令狐掌门 技术交流QQ群&#xff1a;675120140 csdn博客&#xff1a;https://mingshiqiang.blog.csdn.net/ 文章目录 WPF绘图基本用法绘制直线在XAML中绘制直线在C#代码中绘制直线使用Path绘制直线注意 矩形绘制在XAML中绘制矩形在C#代码中绘制矩形设置矩形的位…

2.1 总线问题

同一时间只能有一个去控制总线,因此需要一个输出开关去确保总线不出错 一旦同时开启输出开关,下面的锁存器还会被上面的数据修改如果上下同时开启可写,且同时开启可输出, 则短路