MybatisPlus的代码生成器
文章目录
为了便捷阅读文章,代码以图片方式展现便于圈出重点,毕竟我自己也不想看硬生生的文字,所有代码放在文末,需要copy代码的请直接看文末即可或者文末的码云gitee仓库下载整个项目查看。
若存在不正确的地方,有请大家能够提点指导一番,谢谢!
项目结构目录
pom.xml,详细的看文末的代码
application.properties,详细的看文末的代码
CodeGenerator.java,详细的看文末的代码
开始生成代码
好了,准备工作差不多了,开始生成代码
运行结果:
不要在意这个文件标识为啥这么可爱,这只是MybatisPlus的一个插件,官网上就可以查询到,你也可以搞一个,你的文件标识也可以这末可爱,嘿嘿嘿
代码生成好了,也没有红色波浪线报红报错,是不是很是激动很是兴奋的启动项目
哦豁!!!哦豁!!!哦豁!!!
报错咯,来,解决方法其实早就写出来了,在CodeGenerator.java文件中的注释里,这就再描述一次
第一种:给 ***Mapper 文件中加上 @Mapper 注解
第二种:在 MybatisPlusConfig配置类 或 项目启动类 中使用 @MapperScan(basePackages = “com.example.demo.mapper”)——com.example.demo.mapper表示***Mapper文件所在文件夹
这里只是用了第一种方法
再次启动,成功了!
还有个小问题
代码生成就到此为止了。
测试生成的代码
测试代码可在文末查看
成功打印,完美。
MybatisPlus分页插件
MybatisPlusConfig 配置类
接下来就捣鼓捣鼓分页吧
先添加 MybatisPlusConfig 配置类,该配置类再MybatisPlus官网中也有,可以直接copy,文末也有
测试分页
代码详情
pom.xml
<?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.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>8.0.20</scope>
</dependency>
<!--MybatisPlus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!--MybatisPlus-CodeGenerator-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<!--Freemarker,生成代码时使用的模板-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<!--用于测试的junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</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>
application.properties
# ServerProperties
server.port=8080
# 配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=2846959
# 开启mybatisPlus的sql打印
mybatis-plus.configuration.log-impl= org.apache.ibatis.logging.stdout.StdOutImpl
CodeGenerator.java
package com.example.demo;
import com.baomidou.mybatisplus.annotation.DbType;
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;
/**
* @author xzhong
* @date 2021-04-16 10:18:39
*/
public class CodeGenerator {
/**
* 该代码生成器使用介绍;
* 三处位置修改即可使用:1.数据库连接设置,记得启动项目前配置好项目的数据库连接 application.properties
* 2.需要生成的表名
* 3.修改最下方的包名配置,修改为项目中的包名
* 本代码生成的代码时直接在项目中的,若想生成代码在其他位置(如电脑D盘根目录),则修改 projectPath = "D:/"值即可
*
* 代码生成后注意事项:生成后如果存在 Unsatisfied dependency expressed through field 'baseMapper' 等错误,
* 第一种:给 ***Mapper 文件中加上 @Mapper 注解
* 第二种:在 MybatisPlusConfig配置类 或 项目启动类 中使用 @MapperScan(basePackages = "com.example.demo.mapper")
* ——————————com.example.demo.mapper表示***Mapper文件所在文件夹
* @Title: main
* @Description: 生成
* @param args
*/
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");// 生成文件的位置(项目中)
gc.setFileOverride(true); // 是否文件覆盖
gc.setActiveRecord(false);// 不需要ActiveRecord(实体类继承Model)特性的请改为false
gc.setEnableCache(false);// XML 二级缓存
gc.setBaseResultMap(true);// XML ResultMap
gc.setBaseColumnList(true);// XML ColumnList
gc.setAuthor("xzhong");// 作者
// 自定义文件命名,注意 %s 会自动填充表实体属性!
gc.setControllerName("%sController");
// 默认service接口名IXXXService 自定义指定之后就不会用I开头了
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("2846959");
dsc.setUrl("jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC");
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略(下划线转驼峰)
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setInclude("book","subject"); // 需要生成的表名
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
// strategy.setSuperServiceClass(null);
// strategy.setSuperServiceImplClass(null);
// strategy.setSuperMapperClass(null);
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.demo");
// pc.setController("controller");
// pc.setService("service");
// pc.setServiceImpl("impl");
// pc.setMapper("mapper");
// pc.setEntity("entity");
// pc.setXml("xml");
mpg.setPackageInfo(pc);
// 执行生成
mpg.execute();
}
}
mybatisPlusTest.java
package com.example.demo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.Book;
import com.example.demo.service.BookService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
/**
* @author xzhong
* @date 2021-04-16 16:34:57
*/
@SpringBootTest
public class mybatisPlusTest {
@Autowired
private BookService bookService;
/*
* 基本查询测试
* @author xzhong
* @date 2021-04-16 16:36:28
* @param
* @return void
*/
@Test
public void getAllUser(){
List<Book> bookList = bookService.list();
System.out.println(bookList);
}
/*
* 分页测试
* @author xzhong
* @date 2021-04-16 16:45:34
* @param
* @return void
*/
@Test
public void getBookPage(){
Integer pageNum = 2;
Integer pageSize = 5;
IPage<Book> bookIPage = bookService.getBaseMapper().selectPage(new Page<>(pageNum, pageSize), null);
System.out.println(bookIPage);
}
}
码云仓库地址
仓库分支说明:
- master分支内的内容仅为个人使用,可能有点乱,不必查看。
- code_before分支:包含的是 未开始生成代码前 的项目代码,可以直接修改数据库连接信息即可开始生成代码。
- code_after分支:生成代码后 的项目代码,包含测试类 mybatisPlusTest.java
- code_page分支:添加了分页插件的后的项目代码