下面我将为你详细讲解 Mybatis Plus 自动生成器解析及遇到的坑。
1. 简介
Mybatis Plus 是一款基于 Mybatis 的快速开发框架,提供了常用的 CRUD 操作、分页、逻辑删除等功能,大大减少了代码量,提升了开发效率。而其中的代码生成器,更是可以帮助我们一键生成实体、Mapper、Service、Controller 等文件,减少了手写代码的时间和难度。
2. 使用 Mybatis Plus 自动生成器
2.1 添加依赖
在 pom.xml 文件中添加以下依赖:
<!-- Mybatis Plus 自动生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.2</version>
</dependency>
2.2 配置文件
在 resources 目录下创建 generator 目录,并在其中创建 generator.properties 配置文件,其主要内容如下:
# 数据库驱动
jdbc.driver=com.mysql.jdbc.Driver
# 数据库连接地址
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
# 数据库用户名
jdbc.username=root
# 数据库密码
jdbc.password=123456
# 包名
package.name=com.example.demo
# 生成文件输出目录
out.dir=src/main/java
2.3 执行命令
在执行代码生成命令时,需要指定 generator.properties 配置文件的路径,以及代码生成器的模板路径:
import com.baomidou.mybatisplus.generator.AutoGenerator;
public class CodeGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir("D:\\Blog\\test");
gc.setAuthor("");
gc.setOpen(false);
gc.setFileOverride(false);
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.demo");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setController("controller");
mpg.setPackageInfo(pc);
// 配置模板
TemplateConfig tc = new TemplateConfig();
tc.setEntity("/template/entity.java.vm");
tc.setMapper("/template/mapper.java.vm");
tc.setXml("/template/mapper.xml.vm");
tc.setService("/template/service.java.vm");
tc.setServiceImpl("/template/serviceImpl.java.vm");
tc.setController("/template/controller.java.vm");
mpg.setTemplate(tc);
// 执行生成
mpg.execute();
}
}
执行上述命令,即可生成实体类、Mapper、Service、Controller 等文件。
3. 遇到的坑
3.1 配置文件路径问题
在执行命令时,需要指定 generator.properties 配置文件的绝对路径,否则可能会出现找不到文件的错误。
3.2 模板文件路径问题
在 Mybatis Plus 自动生成器中,默认使用的是 Velocity 模板引擎,而在指定模板文件路径时,需要使用相对路径。
举例说明:
假设模板文件的路径是 resources/template/entity.java.vm。如果直接指定为 entity.java.vm,程序就会找不到该文件。正确的做法是使用 /template/entity.java.vm,表示相对于 resources 目录的路径。
4. 示例
4.1 自动生成实体类
配置 generator.properties 配置文件并执行 CodeGenerator 类的 main 方法,即可生成如下代码:
package com.example.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @since 2021-10-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 姓名
*/
@TableField("name")
private String name;
/**
* 年龄
*/
@TableField("age")
private Integer age;
}
4.2 自动生成 Mapper、Service、Controller 等文件
以生成 UserController 为例,执行以下代码:
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.TemplateConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
public class GenerateCodeTest {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator().setTemplateEngine(new FreemarkerTemplateEngine());
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
gc.setAuthor("wangsan");
gc.setOpen(false);
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.zhangzhenguang.springboot");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setController("controller");
mpg.setPackageInfo(pc);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 执行生成
mpg.execute();
}
}
将上述代码保存并执行,即可在 com.zhangzhenguang.springboot.controller 包下生成以下 UserController 类:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @since 2021-10-12
*/
@RestController
@RequestMapping("/user")
public class UserController {
}
5. 总结
Mybatis Plus 自动生成器是一款非常方便的工具,可以大大减少代码量,提高开发效率。在使用过程中,需要注意配置文件路径、模板文件路径等问题,以便顺利生成代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis plus自动生成器解析(及遇到的坑) - Python技术站