Mybatis-plus01--快速开始

news/2025/3/6 22:20:04/文章来源:https://www.cnblogs.com/5ran2yl/p/18756232

前言

在编写Java开发过程中,尤其是CRUD开发,我们会发现大部分事件都在编写Java持久层的增删改查上了,并且配置mybatis的mapper文件也是一件麻烦的事。如果你也有这样的烦劳,看来就可以认识一下我们的新朋友mybatis-plus了。

MyBatis-Plus 是一个 Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特点:无侵入,只增强mybatis,不会破坏原来的已经由mybatis构建的项目;CRUD,内置CRUD方法,不再需要自己编写单表CRUD功能;Lambda表达式以及各种插件。

快速入门

实验环境需要在JetBrins Idea上完成,请事先下载好这款编辑器

1.构建一个spring Boot项目

打开idea,新建项目为SpringBoot

JDK最好使用17以上,默认打jar包就好,然后第二个勾选依赖,先只勾选一个spring Web就好,后面慢慢的导入也是一样的,由于springboot的自动装配,自己手写导入依赖很少

 2.引入相关的依赖

 由于测试的是数据库方面,那么映入的依赖肯定要包括数据库连接器,我使用的是mysql,故而需要导入mysql-connector-java

接着导入mybatis-plus,导入mybatis-plus需要注意不要同时导入mybatis的依赖,这会导致依赖冲突,一个mybatis-plus就可以解决了:mybatis-plus-spring-boot3-starter

然后导入一个方便写实体类的插件Lombok,也是老朋友了

全部的准备依赖如下:

<!--        mysql驱动器--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.31</version></dependency>
<!--        lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
<!--        mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.10.1</version></dependency>

 

3.写application.properties文件:连接配置

一般MySQL的使用版本一共有两个,一个是5版本开头的用户,这类用户配置需要配置登录用户名,密码,连接地址以及连接驱动,而8版本开头的用户则是需要多配置一个时区

5版本的连接驱动:com.mysql.jdbc.Driver ;8版本的驱动:com.mysql.cj.jdbc.Driver;由于8版本向下兼容,故而5版本的mysql也可以使用8版本的连接驱动

5版本的配置如下:

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

 

8版本的配置多了一个时区配置:

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

4.初始化数据库和一张数据库表用于测试mybatis-plus

创建数据库命令:

create database mybatis_plus;

 

使用此数据库,并且创建一张数据库表:

use mybatis_plus;
DROP TABLE IF EXISTS `user`;CREATE TABLE `user`
(id BIGINT NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (id)
);

 

并且插入一些初始化的数据:

DELETE FROM `user`;INSERT INTO `user` (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

 

查看数据库表中的内容,是否完成插入:

select * from user;

 

 5.编写实体类,用于映射数据库表的字段

User实体类:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Accessors(chain=true)
public class User {private  Integer id;private String name;private int age;private String email;
}

 

6.编写Dao接口,或者持久层接口

由于是操作User的接口,故而推荐定义为UserDao,并且需要在此接口之下积乘BaseMapper父类,这个父类就是mybatis-plus写的,实现此父类后会有很多CRUD方法,直接调用就可以操作数据库了

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.cqust.testmybatisplus.pojo.User;public interface UserDao extends BaseMapper<User> {
}

 

注意:当我们继承BaseMapper之后,并且传入一个操作的泛型,也就是要操作的实体类给它,我们就已经将此实体类对应的数据库表的CRUD方法写好了。

由于mybatis-plus可以自动取别名,传入User,那么它就会默认操作的表为user表

完成接口继承之后,需要在启动器中使用MapperScan扫描dao下面的包,用于注入到spring容器中,一定要定位到持久层的包也就是dao

@MapperScan("org.cqust.testmybatisplus.dao")
@SpringBootApplication
public class TestMybatisPlusApplication {public static void main(String[] args) {SpringApplication.run(TestMybatisPlusApplication.class, args);}}

 

7.测试BaseMapper中的方法

简单测试一个查询全部信息的程序:

@Autowiredprivate UserDao userDao;@Testpublic void testSelect(){List<User> users = userDao.selectList(null);users.forEach(System.out::println);}

selectList需要传入条件选择器,为null就是无条件查询,也就是全表查询:

 最后查询出的结果就是创建数据库表的那些数据:

 8.配置log日志,方便调试mybatis-plus

默认的控制台只会输出打印结果,我们并不知道,究竟执行了什么sql语句,这里推荐在application.properties文件中打开log日志功能,方便调试

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 

再次运行测试程序:

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作业二:文本查重

作业介绍这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023github https://github.com/Ryon-h/3123003446这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13324这个作业的目标 完成…

上哪儿下载stable diffusion

要在本地环境中下载和安装Stable Diffusion,您可以遵循以下几种方法: 方法一:GitHub源码下载(工作流下载:https://www.mix688.com/964.html)硬件与软件环境准备:确保计算机配备至少4GB显存的NVIDIA GPU。安装Windows操作系统。准备大约10GB的硬盘空间。安装所需软件:下…

清华大学DeepSeek课程:基于DeepSeek的AI音乐词曲创作法(附视频下载)

本课程由清华大学新媒沈阳团队精心打造,旨在教授大家如何利用DeepSeek这一强大的AI工具进行音乐词曲创作。DeepSeek不仅能够帮助我们理解音乐创作的基本原理,还能激发我们的创造力。本课程由清华大学新媒沈阳团队精心打造,旨在教授大家如何利用DeepSeek这一强大的AI工具进行…

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届 CCPC 河南省大学生程序设计竞赛(Problem L. Toxel 与 PCPC II)

对于这道题我最开始是想用斜率优化dp,但是x是四次方明显不行,如果是二次方就好了,所以要换一个思路, 可以观察到如果一次性修复的x太多了,会导致时间消耗太大,这样我们还不如一个错误一个错误的修,当x=22时x的四次方就超过了200000,所以说我们最多一次修复22个bug了,值…

2025.3.3微服务架构(Dubbo)

Dubbo配置方式 1.注解: 基于注解可以快速的将程序配置,无需多余的配置信息,包含提供者和消费者。弊端是根据配置信息无法快速定位。XML:和Spring做结合,相关的Service和Reference均使用Spring集成后的。通过这样的方式可以很方便的通过几个文件进行管理整个集群配置。可以快…

数据集蒸馏论文阅读

Dataset Distillation 18年的论文,最早提出数据蒸馏的概念 理论 通常的梯度下降是小批量的 SGD,每次都需要从训练数据中选一个 minibatch 来更新。这篇文章的重点是学习到一个合成数据 \(\hat x=\{\hat x_i\}_{i=1}^M\) 和学习率 \(\hat \eta\),这样我们就可以固定梯度下降的…

数据蒸馏论文阅读

Dataset Distillation 18年的论文,最早提出数据蒸馏的概念 理论 通常的梯度下降是小批量的 SGD,每次都需要从训练数据中选一个 minibatch 来更新。这篇文章的重点是学习到一个合成数据 \(\hat x=\{\hat x_i\}_{i=1}^M\) 和学习率 \(\hat \eta\),这样我们就可以固定梯度下降的…

激活函数汇总

激活函数 激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。 Sigmoid (1) 公式:\(S(x)=\frac{1}{1+e^{-x}}\) (2) 函数图:(3) 缺点: ① 输出值落在(0,1)之间,期望均值为0.5,不符合均值为0的理想状态 ② 该函数存在一正一负两块“死区”(死区:梯度计算为0,…

深入探究C语言内存分配系列函数

深入探究C语言内存分配系列函数 目录深入探究C语言内存分配系列函数内存是什么?内存分配的三种方式为什么要学习动态分配的系列函数?四大内存分配函数前置知识malloc与freemallocfreerealloccallocDeepseek的总结 当我们完成一个程序设计时,需要对其背后的底层原理学习 操作…

第一课 引言与词向量

对于文字的意义,语言学家有很多种定义。其中一种定义运用在自然语言处理中非常有用,这种意义的定义见下分布式语义就是看上下文词来决定单词的意义。于是我们可以利用词向量来衡量两个词之间的相似程度,词的意义被分散在词向量的每一维中 词嵌入之所以叫词嵌入,是因为我们给…

2025.03.06 CW 模拟赛 A. 岛屿

题面 & 题解 A. 岛屿 概率期望会不了一点. 思路 假设我们最开始有 \(a\) 个「蓝蓝 / 红红」链, \(b\)​ 个「蓝红」链. 我们考虑对于每一个「蓝红」链向外连边. 如图, 我们将红点向外连向一条「蓝蓝」链, 由于每一个点只能最多向外连一条边, 那么它们就「合成」了一条蓝蓝链…