依賴jar包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.29</version>
</dependency>
代碼
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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;
import java.util.Scanner;
/**
* -mp代碼生成工具類,使用freemarker引擎
* -使用前可以進行的修改
* gc.setAuthor 設置作者,會出現在類前
* gc.setOutputDir 設置輸出路徑,默認爲 D:\
* pc.setParent 設置輸出的包名(也即文件夾名)
* DataSourceConfig 設置數據源
* -實體類使用lombok,swagger2,駝峯命名,去除is_前綴
* -controller 使用rest風格
* -mapper.xml生成resultMap和baseColumnList
* @author gcl
* @create 2019-09-17 14:51
*/
public class CodeGenerator {
/**
* <p>
* 讀取控制檯內容
* </p>
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("請輸入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("請輸入正確的" + tip + "!");
}
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
// 選擇 freemarker 引擎,默認 Veloctiy
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
// 全局配置
GlobalConfig gc = new GlobalConfig();
//作者
gc.setAuthor("gcl");
//路徑,默認爲 D:\
//String projectPath = System.getProperty("user.dir");
//gc.setOutputDir(projectPath + "java");
// XML ResultMap
gc.setBaseResultMap(true);
// XML column List
gc.setBaseColumnList(true);
//使用swagger2
gc.setSwagger2(true);
//設置主鍵生成策略
gc.setIdType(IdType.ID_WORKER_STR);
mpg.setGlobalConfig(gc);
// 數據源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("密碼");
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC");
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// strategy.setCapitalMode(true);// 全局大寫命名 ORACLE 注意
//實體類使用lombok
strategy.setEntityLombokModel(true);
//rest風格controller
strategy.setRestControllerStyle(true);
//is_xxx 去除is_ 前綴
strategy.setEntityBooleanColumnRemoveIsPrefix(true);
//字段註釋
strategy.setEntityTableFieldAnnotationEnable(true);
//數據表命名策略
strategy.setNaming(NamingStrategy.underline_to_camel);
//數據表列生成策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 需要生成的表
strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("CodeGeneratorFolder");
mpg.setPackageInfo(pc);
// 執行生成
mpg.execute();
}
}
測試結果
實體類
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author gcl
* @since 2019-09-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="User對象", description="")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主鍵")
@TableId(value = "id", type = IdType.ID_WORKER_STR)
private Long id;
@ApiModelProperty(value = "姓名")
@TableField("name")
private String name;
@ApiModelProperty(value = "年齡")
@TableField("age")
private Integer age;
@ApiModelProperty(value = "郵箱")
@TableField("email")
private String email;
@ApiModelProperty(value = "直屬上級id")
@TableField("manager_id")
private Long managerId;
@ApiModelProperty(value = "創建時間")
@TableField("create_time")
private LocalDateTime createTime;
@ApiModelProperty(value = "修改時間")
@TableField("update_time")
private LocalDateTime updateTime;
@ApiModelProperty(value = "版本")
@TableField("version")
private Integer version;
@ApiModelProperty(value = "邏輯刪除標識(0.未刪除,1.已刪除)")
@TableField("deleted")
private Integer deleted;
}
controller
/**
* <p>
* 前端控制器
* </p>
*
* @author gcl
* @since 2019-09-17
*/
@RestController
@RequestMapping("/user")
public class UserController {
}
service
/**
* <p>
* 服務類
* </p>
*
* @author gcl
* @since 2019-09-17
*/
public interface IUserService extends IService<User> {
}
service實現類
/**
* <p>
* 服務實現類
* </p>
*
* @author gcl
* @since 2019-09-17
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
mapper接口
/**
* <p>
* Mapper 接口
* </p>
*
* @author gcl
* @since 2019-09-17
*/
public interface UserMapper extends BaseMapper<User> {
}
mapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="CodeGeneratorFolder.mapper.UserMapper">
<!-- 通用查詢映射結果 -->
<resultMap id="BaseResultMap" type="CodeGeneratorFolder.entity.User">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
<result column="email" property="email" />
<result column="manager_id" property="managerId" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="version" property="version" />
<result column="deleted" property="deleted" />
</resultMap>
<!-- 通用查詢結果列 -->
<sql id="Base_Column_List">
id, name, age, email, manager_id, create_time, update_time, version, deleted
</sql>
</mapper>