SpringBoot 整合MyBatisPlus

news/2025/2/22 4:44:46/

简介

MyBatis Plus(也称为MyBatis+)是MyBatis框架的增强版本,MyBatis是一种流行的轻量级Java持久化框架。MyBatis Plus提供了额外的功能,并简化了对MyBatis的使用,使得在Java应用程序中使用数据库更加便捷。

官方文档:https://baomidou.com/
Maven仓库地址:https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter

在这里插入图片描述

整合步骤

1. 导入 MyBatisPlus 所需要的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.liming</groupId><artifactId>mybatis-plus</artifactId><version>0.0.1-SNAPSHOT</version><name>mybatis-plus</name><description>springboot整合mp</description><properties><java.version>1.8</java.version><log4j.version>1.2.17</log4j.version><druid.version>1.2.8</druid.version><mybatisplus.version>3.4.2</mybatisplus.version></properties><dependencies><!--web启动依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--mybatis plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatisplus.version}</version></dependency><!--druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!--log4j--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--单元测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

2.配置数据库连接信息

server:port: 9000
#####数据源配置#####
spring:datasource:username: rootpassword: 123456#serverTimezone=UTC解决时区的报错url: jdbc:mysql://localhost:3306/db_authority_system?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource#druid 数据源专有配置initialSize: 5 #连接池的初始大小minIdle: 5 #连接池中最小空闲连接数量maxActive: 20 #连接池中最大活跃连接数量maxWait: 60000 #获取连接的最大等待时间timeBetweenEvictionRunsMillis: 60000 #定期检查连接池中空闲连接的间隔时间minEvictableIdleTimeMillis: 300000 #连接池中连接的最小空闲时间validationQuery: SELECT 1 FROM DUAL #校验连接是否有效的SQL查询语句#连接返回时是否进行测试testWhileIdle: truetestOnBorrow: falsetestOnReturn: false#是否缓存PreparedStatementpoolPreparedStatements: truefilters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20 #每个连接上缓存PreparedStatement的最大数量。useGlobalDataSourceStat: true #是否开启全局监控统计功能connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#####mybatisplus配置#####
mybatis-plus:#加载映射文件mapper-locations: classpath:mapper/*.xml#设置别名type-aliases-package: com.liming.entity#开启驼峰命名configuration:map-underscore-to-camel-case: true# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#####配置日志#####
logging:config: classpath:logback.xml#设置日志级别的节点level:com:liming: debug

3.MybatisX插件快速生成代码

首先使用IDEA连接mysql
在这里插入图片描述
找到表右键,选择插件的逆向工程选项
在这里插入图片描述
编写逆向工程配置信息
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.MybatisX插件生成代码的模板配置

  • 按照指定目录找到插件模板配置目录 Scratches and Consoles -> Extensions -> MybatisX
  • 这里会提供默认模板: 例如在 1.4.13 提供了模板: default-all,default,mybatis-plus2,mybatis-plus3
  • 如果想重置默认模板, 可以右键点击 MybatisX 目录,选择 Restore Default Extensions 选项
    在这里插入图片描述
    自定义模板内容
名称含义
tableClass.fullClassName类的全称(包括包名)
tableClass.shortClassName类的简称
tableClass.tableName表名
tableClass.pkFields表的所有主键字段
tableClass.allFields表的所有字段
tableClass.baseFields排除主键和 blob 的所有字段
tableClass.baseBlobFields排除主键的所有字段
tableClass.remark表注释

更多信息大家可以查看官网获取

4.generator批量生成代码

pom

<!--代码生成-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version>
</dependency>
<!--freemarker模板-->
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version>
</dependency>

编写核心模板

package com.liming.utils;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;public class GeneratorCode {private static String author ="liming";//作者名称private static String outputDir ="D:\\";//生成的位置private static String driver ="com.mysql.cj.jdbc.Driver";//驱动,注意版本//连接路径,注意修改数据库名称private static String url ="jdbc:mysql://localhost:3306/db_authority_system?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";private static String username ="root";//数据库用户名private static String password ="123456";//数据库密码private static String tablePrefix ="sys_";//数据库表的前缀,如t_userprivate static String [] tables = {"sys_user","sys_permission","sys_department"};   //生成的表private static String parentPackage = "com.liming";//顶级包结构private static String mapper = "mapper";//数据访问层包名称private static String service = "service";//业务逻辑层包名称private static String entity = "entity";//实体层包名称private static String controller = "controller";//控制器层包名称private static String mapperxml = "mapper";//mapper映射文件包名称public static void main(String[] args) {//1. 全局配置GlobalConfig config = new GlobalConfig();config.setAuthor(author) // 作者.setOutputDir(outputDir) // 生成路径.setFileOverride(true)  // 文件覆盖.setIdType(IdType.AUTO) // 主键策略.setServiceName("%sService")  // 设置生成的service接口的名字的首字母是否为I,加%s则不生成I.setBaseResultMap(true)    //映射文件中是否生成ResultMap配置.setBaseColumnList(true);  //生成通用sql字段//2. 数据源配置DataSourceConfig dsConfig  = new DataSourceConfig();dsConfig.setDbType(DbType.MYSQL)  // 设置数据库类型.setDriverName(driver) //设置驱动.setUrl(url)         //设置连接路径.setUsername(username) //设置用户名.setPassword(password);    //设置密码//3. 策略配置StrategyConfig stConfig = new StrategyConfig();stConfig.setCapitalMode(true) //全局大写命名.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略.setTablePrefix(tablePrefix) //表前缀.setInclude(tables)  // 生成的表.setEntityLombokModel(true);//支持Lombok//4. 包名策略配置PackageConfig pkConfig = new PackageConfig();pkConfig.setParent(parentPackage)//顶级包结构.setMapper(mapper)    //数据访问层.setService(service)   //业务逻辑层.setController(controller) //控制器.setEntity(entity) //实体类.setXml(mapperxml);    //mapper映射文件//5. 整合配置AutoGenerator ag = new AutoGenerator();ag.setGlobalConfig(config).setDataSource(dsConfig).setStrategy(stConfig).setPackageInfo(pkConfig).setTemplateEngine(new FreemarkerTemplateEngine()); // 使用Freemarker引擎模板//6. 执行ag.execute();}
}

运行

在这里插入图片描述

可以看见我们所需的代码已经生成,将文件拷贝到项目中即可

特别注意

  • 将实体类中属性数据类型为LocalDateLocalDateTime修改成java.util.Date类型

http://www.ppmy.cn/news/1094722.html

相关文章

2023高教社杯数学建模E题思路分析 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c; 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

走进中国水果罐头领军品牌真心罐头—快消食品企业的全链路数字化

近日&#xff0c;【数字中国-高效增长】名城优企游学系列之走进真心罐头活动成功举办&#xff01; 真心罐头食品有限公司&#xff08;以下简称为“真心罐头”&#xff09;初创于1990年&#xff0c;位于素有“北方明珠”、“黄桃之乡”美誉的海滨城市——辽宁省大连市&#xff0…

SRT参数说明

1.超时选项 connect_timeout 连接超时时间&#xff0c;单位毫秒&#xff0c;默认值为3秒。 当RTT > 1500毫秒(2次握手交换)时&#xff0c;SRT无法连接。此选项适用于caller和rendezvous模式。 listen_timeout 监听超时时间&#xff0c;单位毫秒 timeout 为读、写和连接操作…

Unity之创建第一个2D游戏项目

一 Unity环境配置 1.1 Untity资源官网下载&#xff1a;https://unity.cn/releases 1.2 Unity Hub集成环境&#xff0c;包含工具和项目的管理 1.3 Unity Editor编辑器 1.4 Visual Studio 2022脚本编辑器 1.5 AndroidSKD&#xff0c;JDK&#xff0c;NDK工具&#xff0c;用于and…

宠物行业如何进行软文营销

如今&#xff0c;宠物已经成为了人们生活中不可或缺的一部分&#xff0c;大众对于萌宠的喜爱与日俱增&#xff0c;随着“萌宠经济”升温&#xff0c;越来越多的商机开始出现&#xff0c;伴随着宠物市场竞争的日益激烈&#xff0c;宠物行业的营销光靠硬广告很难吸引受众&#xf…

[刷题记录]牛客面试笔刷TOP101

牛客笔试算法必刷TOP101系列,每日更新中~ 1.合并有序链表2023.9.3 合并两个排序的链表_牛客题霸_牛客网 (nowcoder.com) 题意大致为: 将两个链表中的元素按照从小到大的顺序合并成为一个链表. 所给予的条件: 给出的所要合并的链表都是从小到大顺序排列的. 思路: 创建一…

【CSDN技术】Markdown编辑器如何使用-csdn博客编写入门

Markdown编辑器如何使用-csdn博客编写入门 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自…

若依集成mybatisplus【亲测有效】

一 修改pom文件 最外层的pom.xml增加如下配置 hutool工具包和lombok工具包如果不需要的话可以自行删除并修改后面的类里面的代码 <!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</…