简介
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();}
}
运行
可以看见我们所需的代码已经生成,将文件拷贝到项目中即可
特别注意
- 将实体类中属性数据类型为
LocalDate
和LocalDateTime
修改成java.util.Date
类型