简介
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"?><projectxmlns="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: root
password: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.Driver
type: 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,log4j
maxPoolPreparedStatementPerConnectionSize: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>
编写核心模板
packagecom.liming.utils;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.mybatisplus.generator.config.DataSourceConfig;importcom.baomidou.mybatisplus.generator.config.GlobalConfig;importcom.baomidou.mybatisplus.generator.config.PackageConfig;importcom.baomidou.mybatisplus.generator.config.StrategyConfig;importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;importcom.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;publicclassGeneratorCode{privatestaticString author ="liming";//作者名称privatestaticString outputDir ="D:\\";//生成的位置privatestaticString driver ="com.mysql.cj.jdbc.Driver";//驱动,注意版本//连接路径,注意修改数据库名称privatestaticString url ="jdbc:mysql://localhost:3306/db_authority_system?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";privatestaticString username ="root";//数据库用户名privatestaticString password ="123456";//数据库密码privatestaticString tablePrefix ="sys_";//数据库表的前缀,如t_userprivatestaticString[] tables ={"sys_user","sys_permission","sys_department"};//生成的表privatestaticString parentPackage ="com.liming";//顶级包结构privatestaticString mapper ="mapper";//数据访问层包名称privatestaticString service ="service";//业务逻辑层包名称privatestaticString entity ="entity";//实体层包名称privatestaticString controller ="controller";//控制器层包名称privatestaticString mapperxml ="mapper";//mapper映射文件包名称publicstaticvoidmain(String[] args){//1. 全局配置GlobalConfig config =newGlobalConfig();
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 =newDataSourceConfig();
dsConfig.setDbType(DbType.MYSQL)// 设置数据库类型.setDriverName(driver)//设置驱动.setUrl(url)//设置连接路径.setUsername(username)//设置用户名.setPassword(password);//设置密码//3. 策略配置StrategyConfig stConfig =newStrategyConfig();
stConfig.setCapitalMode(true)//全局大写命名.setNaming(NamingStrategy.underline_to_camel)// 数据库表映射到实体的命名策略.setTablePrefix(tablePrefix)//表前缀.setInclude(tables)// 生成的表.setEntityLombokModel(true);//支持Lombok//4. 包名策略配置PackageConfig pkConfig =newPackageConfig();
pkConfig.setParent(parentPackage)//顶级包结构.setMapper(mapper)//数据访问层.setService(service)//业务逻辑层.setController(controller)//控制器.setEntity(entity)//实体类.setXml(mapperxml);//mapper映射文件//5. 整合配置AutoGenerator ag =newAutoGenerator();
ag.setGlobalConfig(config).setDataSource(dsConfig).setStrategy(stConfig).setPackageInfo(pkConfig).setTemplateEngine(newFreemarkerTemplateEngine());// 使用Freemarker引擎模板//6. 执行
ag.execute();}}
运行
可以看见我们所需的代码已经生成,将文件拷贝到项目中即可
特别注意
- 将实体类中属性数据类型为
LocalDate
和LocalDateTime
修改成java.util.Date
类型
版权归原作者 小钟不想敲代码 所有, 如有侵权,请联系我们删除。