【Mybatis-Plus】Mybatis-Plus代码生成器(二)
一、使用
1、准备一个数据库,本例使用的是mysql数据库,建一张员工表(employee),并且插入一条数据,sql如下:
1 CREATE TABLE `employee` (
2 `id` BIGINT ( 20 ) NOT NULL COMMENT '主键ID',
3 `last_name` VARCHAR ( 30 ) DEFAULT NULL COMMENT '姓名',
4 `age` INT ( 11 ) DEFAULT NULL COMMENT '年龄',
5 `email` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',
6 PRIMARY KEY ( `id` )
7 ) ENGINE = INNODB DEFAULT CHARSET = utf8;
8
9
10 INSERT INTO employee ( id, last_name, age, email )
11 VALUES
12 ( 1, 'Jone', 18, 'test1@baomidou.com' ),
13 ( 2, 'Jack', 20, 'test2@baomidou.com' ),
14 ( 3, 'Tom', 28, 'test3@baomidou.com' ),
15 ( 4, 'Sandy', 21, 'test4@baomidou.com' ),
16 ( 5, 'Billie', 24, 'test5@baomidou.com' );
2、新建一个SpringBoot工程,引入mybatis-plus依赖以及连接mysql数据库依赖
1 <!-- mybatis-plus-generator,逆向生成代码 --> 2 <dependency> 3 <groupId>com.baomidou</groupId> 4 <artifactId>mybatis-plus-generator</artifactId> 5 <version>3.5.2</version> 6 </dependency> 7 <!-- SpringBoot中包含freemarker,逆向生成代码模板 --> 8 <dependency> 9 <groupId>org.freemarker</groupId> 10 <artifactId>freemarker</artifactId> 11 </dependency> 12 <!-- mysql --> 13 <dependency> 14 <groupId>mysql</groupId> 15 <artifactId>mysql-connector-java</artifactId> 16 </dependency>
3、测试类
1 package com.test.mybatisplus; 2 3 import com.baomidou.mybatisplus.generator.FastAutoGenerator; 4 import com.baomidou.mybatisplus.generator.config.OutputFile; 5 import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; 6 import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; 7 8 import java.sql.Types; 9 import java.util.Collections; 10 11 public class FastAutoGeneratorTest { 12 13 public static void main(String[] args) { 14 FastAutoGenerator 15 .create("jdbc:mysql://1270.0.1:3306/test_mybatis_plus?allowPublicKeyRetrieval=true&useSSL=false", 16 "root", "123456") 17 .globalConfig(builder -> { 18 builder.author("hd") // 设置作者 19 // .enableSwagger() // 开启 swagger 模式 20 .fileOverride() // 覆盖已生成文件 21 .outputDir("C:\\Users\\H__D\\Desktop"); // 指定输出目录 22 }) 23 24 .packageConfig(builder -> { 25 builder.parent("com.test.mybatisplus") // 设置父包名 26 .moduleName("test") // 设置父包模块名 27 .pathInfo(Collections.singletonMap(OutputFile.xml, "C:\\Users\\H__D\\Desktop")); // 设置mapperXml生成路径 28 }) 29 .strategyConfig(builder -> { 30 builder.addInclude("employee") // 设置需要生成的表名 31 .addTablePrefix("t_", "c_"); // 设置过滤表前缀 32 }) 33 .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 34 .execute(); 35 36 return; 37 38 } 39 }
二、运行测试
1、运行效果如下:
00:01:56.128 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================准备生成文件...==========================
00:01:56.503 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 执行SQL:show table status WHERE 1=1 AND NAME IN ('employee')
00:01:56.550 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 返回记录数:1,耗时(ms):35
00:01:56.581 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 执行SQL:show full fields from `employee`
00:01:56.597 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 返回记录数:6,耗时(ms):23
00:01:56.757 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================文件生成完成!!!==========================
2、生成EmployeeController
1 package com.test.mybatisplus.test.controller; 2 3 import org.springframework.web.bind.annotation.RequestMapping; 4 import org.springframework.stereotype.Controller; 5 6 /** 7 * <p> 8 * 前端控制器 9 * </p> 10 * 11 * @author hd 12 * @since 2024-01-19 13 */ 14 @Controller 15 @RequestMapping("/test/employee") 16 public class EmployeeController { 17 18 } 19 20 21 <!-- mybatis-plus-generator,逆向生成代码 --> 22 <dependency> 23 <groupId>com.baomidou</groupId> 24 <artifactId>mybatis-plus-generator</artifactId> 25 <version>3.5.2</version> 26 </dependency> 27 <!-- SpringBoot中包含freemarker,逆向生成代码模板 --> 28 <dependency> 29 <groupId>org.freemarker</groupId> 30 <artifactId>freemarker</artifactId> 31 </dependency> 32 <!-- mysql --> 33 <dependency> 34 <groupId>mysql</groupId> 35 <artifactId>mysql-connector-java</artifactId> 36 </dependency>
3、生成 IEmployeeService
1 package com.test.mybatisplus.test.service; 2 3 import com.test.mybatisplus.test.entity.Employee; 4 import com.baomidou.mybatisplus.extension.service.IService; 5 6 /** 7 * <p> 8 * 服务类 9 * </p> 10 * 11 * @author hd 12 * @since 2024-01-19 13 */ 14 public interface IEmployeeService extends IService<Employee> { 15 16 }
4、生成 EmployeeServiceImpl
1 package com.test.mybatisplus.test.service.impl; 2 3 import com.test.mybatisplus.test.entity.Employee; 4 import com.test.mybatisplus.test.mapper.EmployeeMapper; 5 import com.test.mybatisplus.test.service.IEmployeeService; 6 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 import org.springframework.stereotype.Service; 8 9 /** 10 * <p> 11 * 服务实现类 12 * </p> 13 * 14 * @author hd 15 * @since 2024-01-19 16 */ 17 @Service 18 public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements IEmployeeService { 19 20 }
5、生成 EmployeeMapper
1 package com.test.mybatisplus.test.mapper; 2 3 import com.test.mybatisplus.test.entity.Employee; 4 import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 6 /** 7 * <p> 8 * Mapper 接口 9 * </p> 10 * 11 * @author hd 12 * @since 2024-01-19 13 */ 14 public interface EmployeeMapper extends BaseMapper<Employee> { 15 16 }
6、生成 Employee
1 package com.test.mybatisplus.test.entity; 2 3 import com.baomidou.mybatisplus.annotation.IdType; 4 import com.baomidou.mybatisplus.annotation.TableId; 5 import java.io.Serializable; 6 7 /** 8 * <p> 9 * 10 * </p> 11 * 12 * @author hd 13 * @since 2024-01-19 14 */ 15 public class Employee implements Serializable { 16 17 private static final long serialVersionUID = 1L; 18 19 @TableId(value = "id", type = IdType.AUTO) 20 private Long id; 21 22 private String lastName; 23 24 private Integer age; 25 26 private String email; 27 28 29 public Long getId() { 30 return id; 31 } 32 33 public void setId(Long id) { 34 this.id = id; 35 } 36 37 public String getLastName() { 38 return lastName; 39 } 40 41 public void setLastName(String lastName) { 42 this.lastName = lastName; 43 } 44 45 public Integer getAge() { 46 return age; 47 } 48 49 public void setAge(Integer age) { 50 this.age = age; 51 } 52 53 public String getEmail() { 54 return email; 55 } 56 57 public void setEmail(String email) { 58 this.email = email; 59 } 60 61 @Override 62 public String toString() { 63 return "Employee{" + 64 "id=" + id + 65 ", lastName=" + lastName + 66 ", age=" + age + 67 ", email=" + email + 68 "}"; 69 } 70 }
7、生成 XML
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.test.mybatisplus.system.mapper.EmployeeMapper"> 4 5 </mapper>