整合 Mybatis Plus

embedded/2024/10/21 13:40:53/

mybatis-plus?">什么是 MyBatis Plus?

MyBatis Plus (简称 MP) 是一款持久层框架,说白话就是一款操作数据库的框架。它是一个 MyBatis 的增强工具,就像 iPhone手机一般都有个 plus 版本一样,它在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis Plus 的愿景是成为 MyBatis 最好的搭档,就像魂斗罗中的 1P、2P,基友搭配,效率翻倍。

mybatis-plus-的优势">MyBatis Plus 的优势

  • 快速开发:MyBatis Plus 提供了一系列的便捷功能,如自动生成 SQL 语句、通用 Mapper 等,使数据库操作更加高效,能够节省开发时间。
  • 更少的配置: Spring Boot 已经为我们提供了很多默认的配置,整合 MyBatis Plus 时只需少量的配置,减少了繁琐的配置步骤。
  • 内置分页插件:MyBatis Plus 内置了分页插件,无需额外的代码,就可以轻松实现分页查询。
  • 更好的支持: MyBatis Plus 在社区中有较广泛的使用,拥有活跃的维护者和开发者,您可以轻松找到解决方案和文档。

建表

在数据库右键,新建查询:

执行如下建表语句:

CREATE TABLE `t_user` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',`username` varchar(60) NOT NULL COMMENT '用户名',`password` varchar(60) NOT NULL COMMENT '密码',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间',`is_deleted` tinyint(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除:0:未删除 1:已删除',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `uk_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

添加依赖

在父项目 主项目 的 pom.xml 文件中,声明 MP 的依赖版本号:

<!-- 版本号统一管理 --><properties>// 省略...<mybatis-plus.version>3.5.2</mybatis-plus.version></properties><!-- 统一依赖管理 --><dependencyManagement><dependencies>// 省略...<!-- Mybatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency></dependencies></dependencyManagement>

然后,在 xx-module-common 公共模块的 pom.xml 文件中,引入 MP 和 MySQL 依赖:

<!-- Mybatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><!-- mysql 依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

配置文件

编辑 applicaiton-dev.yml 文件,添加数据库链接相关的配置,包含连接池的配置:

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/weblog?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNullusername: rootpassword: 123456hikari:minimum-idle: 5maximum-pool-size: 20auto-commit: trueidle-timeout: 30000pool-name: Weblog-HikariCPmax-lifetime: 1800000connection-timeout: 30000connection-test-query: SELECT 1

解释一下各个配置的含义和作用:

  • spring.datasource.driver-class-name: 指定数据库驱动类的完整类名,这里使用的是 MySQL 数据库的驱动类。
  • spring.datasource.url: 数据库连接的URL,指向本地的MySQL数据库,端口是3306,数据库名是xx,同时配置了一系列参数,如使用Unicode编码、字符编码为UTF-8、自动重连、不使用SSL、对零时间进行转换等。
  • spring.datasource.username: 数据库用户名,这里使用的是root
  • spring.datasource.password: 数据库密码,这里使用的是123456

数据库链接池这块,我们使用的 Spring Boot 默认的 HikariCP,它是一个高性能的连接池实现 , 同时,它号称是速度最快的连接池:

  • spring.datasource.hikari.minimum-idle: Hikari连接池中最小空闲连接数。
  • spring.datasource.hikari.maximum-pool-size: Hikari连接池中允许的最大连接数。
  • spring.datasource.hikari.auto-commit: 连接是否自动提交事务。
  • spring.datasource.hikari.idle-timeout: 连接在连接池中闲置的最长时间,超过这个时间会被释放。
  • spring.datasource.hikari.pool-name: 连接池的名字。
  • spring.datasource.hikari.max-lifetime: 连接在连接池中的最大存活时间,超过这个时间会被强制关闭。
  • spring.datasource.hikari.connection-timeout: 获取连接的超时时间。
  • spring.datasource.hikari.connection-test-query: 用于测试连接是否可用的SQL查询,这里使用的是SELECT 1,表示执行这个查询来测试连接。

然后,在 xx-module-common 模块中的 config 包下,新建一个 MybatisPlusConfig 配置文件,代码如下:

package com.yanxiaosheng.xx.common.config;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;/*** @author: 闫小生* @date: 2023-08-22 16:52* @description: Mybatis Plus 配置文件**/
@Configuration
@MapperScan("com.quanxiaoha.weblog.common.domain.mapper")
public class MybatisPlusConfig {
}
  • @Configuration : 此注解声明该类为配置类;

  • @MapperScan : 扫描 MP 的 mapper 接口存放位置。PS: 数据库相关的代码,我们统一放置在 /domain 这个包中,格式如下:

    • dos : 根据阿里的开发规范,统一将数据库对应的实体类命名为 xxxDO 这种形式,统一存放此包下。
    • mapper : 统一放置 mapper 接口文件;

实体类

在 /dos 包中,新建一个 UserDO 类,字段和数据库中的字段通过转驼峰的形式对应一一对应起来,MP 框架会默认通过这种规则将字段光联在一起,内容如下:

package com.yanxiaosheng.xx.common.domain.dos;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;/*** @author: 闫小生* @date: 2023-08-22 17:01* @description: TODO**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("t_user")
public class UserDO {@TableId(type = IdType.AUTO)private Long id;private String username;private String password;private Date createTime;private Date updateTime;private Boolean isDeleted;
}

新建 Mapper 接口

在 mapper包中,创建一个 UserMapper 接口,代码如下:

package com.yanxiaosheng.xx.common.domain.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.quanxiaoha.weblog.common.domain.dos.UserDO;/*** @author: 闫小生* @date: 2023-08-22 17:06* @description: TODO**/
public interface UserMapper extends BaseMapper<UserDO> {
}

至此,用于操作数据的前置代码都搞定了。

新增一条用户记录

接下来,我们通过单元测试,往数据库中添加一个测试记录,看看能否新增成功。在 xx-web 模块中的单元测试类中,新增一个测试方法,代码如下:

  @Autowiredprivate UserMapper userMapper;@Testvoid insertTest() {// 构建数据库实体类UserDO userDO = UserDO.builder().username("闫小生").password("123456").createTime(new Date()).updateTime(new Date()).isDeleted(false).build();userMapper.insert(userDO);}

运行该测试方法,看看表中是否被成功插入一条数据:

可以看到,数据插入成功了。


http://www.ppmy.cn/embedded/56061.html

相关文章

Elasticsearch环境搭建|ES单机|ES单节点模式启动|ES集群搭建|ES集群环境搭建

文章目录 版本选择单机ES安装与配置创建非root用户导入安装包安装包解压配置JDK环境变量配置single-node配置JVM参数后台启动|启动日志查看启动成功&#xff0c;访问终端访问浏览器访问 Kibana安装修改配置后台启动|启动日志查看浏览器访问 ES三节点集群搭建停止es服务域名配置…

如何免费封装APP:小猪APP分发的终极指南

你是否曾经因为APP的封装过程而头疼不已&#xff1f;让我们来聊聊如何在不花一分钱的情况下完成这一任务。而且&#xff0c;我们还会介绍一个超级实用的工具——小猪APP分发&#xff0c;让你轻松解决封装APP的难题。 小猪app封装www.ppzhu.net 什么是APP封装&#xff1f; APP…

Python基础入门知识

目录 引言 简要介绍Python语言 为什么要学习Python Python的应用领域 Python安装和环境配置 Python的下载和安装(Windows, macOS, Linux) 配置Python环境变量 安装和使用IDE(如PyCharm, VS Code) Python基本语法 注释 变量和数据类型(数字,字符串,列表,元组,字典,…

考研计算机网络(第二章 物理层2奈氏准则和香农定理)

目录 1.失真 2.奈氏准则&#xff08;奈奎斯特定理&#xff09; 3.香农定理 1.失真 影响失真程度的因素&#xff1a;码元传输速率&#xff08;速率高&#xff0c;失真程度高&#xff09;&#xff0c;信号传输距离&#xff08;距离远&#xff0c;失真程度高&#xff09;&#…

基于weixin小程序乡村旅游系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;旅游景点管理&#xff0c;景点类型管理&#xff0c;景点路线管理&#xff0c;系统管理 商家帐号账号功能包括&#xff1a;系统首页&#xff0c;旅游景点管理&…

HMI 的 UI 风格,精妙无比

HMI 的 UI 风格&#xff0c;精妙无比

Windows编程上

Windows编程[上] 一、Windows API1.控制台大小设置1.1 GetStdHandle1.2 SetConsoleWindowInfo1.3 SetConsoleScreenBufferSize1.4 SetConsoleTitle1.5 封装为Innks 2.控制台字体设置以及光标调整2.1 GetConsoleCursorInfo2.2 SetConsoleCursorPosition2.3 GetCurrentConsoleFon…

Spring Boot中的开发工具与插件推荐

Spring Boot中的开发工具与插件推荐 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来聊聊Spring Boot中的开发工具与插件推荐。Spring Boot作为一种简…