共计 2634 个字符,预计需要花费 7 分钟才能阅读完成。
代码生成器,也叫逆向工程,是依据数据库里的表构造,主动生成对应的实体类、映射文件和接口。
这和 hibernate 的主动建表恰好相反。
很早之前,写了一个代码生成器的工程,本人也始终在用,很不便,也通过大量验证,也反对很多数据库。
看到很多小伙伴在为数据库生成实体类发愁,现分享给大家,进步开发效率。
mybatis-plus-code-generator 工程介绍
工程地址:mybatis-plus-code-generator:https://github.com/fengwenyi/mybatis-plus-code-generator
目录构造:
Config 类
针对每个人的习惯,能够在这个类里进行配置
/* 包名:service /
public static final String PACKAGE_NAME_SERVICE = “repository”;
/* 包名:service.impl /
public static final String PACKAGE_NAME_SERVICE_IMPL = “repository.impl”;
/* 包名:model /
public static final String PACKAGE_NAME_MODEL = “entity”;
/* 包名:dao /
public static final String PACKAGE_NAME_DAO = “mapper”;
/* 包名:xml /
public static final String PACKAGE_NAME_XML = “xml”;
/* 文件名后缀:Model /
public static final String FILE_NAME_MODEL = “%sEntity”;
/* 文件名后缀:Dao /
public static final String FILE_NAME_DAO = “I%sMapper”;
/* 文件名后缀:Mapper /
public static final String FILE_NAME_XML = “%sMapper”;
/* MP 结尾,Service 结尾 /
public static final String FILE_NAME_SERVICE = “MP%sRepository”;
/* 文件名后缀:ServiceImpl /
public static final String FILE_NAME_SERVICE_IMPL = “%sRepositoryImpl”;
/* 逻辑删除字段 /
public static final String FIELD_LOGIC_DELETE_NAME = “delete_status”;
/* 作者 /
public static final String AUTHOR = “Erwin Feng”;
/* 是否反对 Swagger,默认不反对 /
public static final Boolean SWAGGER_SUPPORT = false;
MySQL8CodeGenerator
圈中的中央是必须要改的。
批改之后,执行就能够生成相应的代码文件了,上面咱们举个例子。
示例
咱们以 MyBatis-Plus 官网的例子为例,拿来演示
SQL
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT ‘ 主键 ID’,
name VARCHAR(30) NULL DEFAULT NULL COMMENT ‘ 姓名 ’,
age INT(11) NULL DEFAULT NULL COMMENT ‘ 年龄 ’,
email VARCHAR(50) NULL DEFAULT NULL COMMENT ‘ 邮箱 ’,
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, ‘Jone’, 18, ‘test1@baomidou.com’),
(2, ‘Jack’, 20, ‘test2@baomidou.com’),
(3, ‘Tom’, 28, ‘test3@baomidou.com’),
(4, ‘Sandy’, 21, ‘test4@baomidou.com’),
(5, ‘Billie’, 24, ‘test5@baomidou.com’);
testMySQLCodeGenerator
DbType dbType = DbType.MYSQL;
String dbUrl = “jdbc:mysql://192.168.16.128:3306/study-spring-boot-mybatis-plus”;
String username = “root”;
String password = “123456”;
String driver = “com.mysql.cj.jdbc.Driver”;
// 表前缀,生成的实体类,不含前缀
String [] tablePrefixes = {};
// 表名,为空,生成所有的表
String [] tableNames = {};
// 字段前缀
String [] fieldPrefixes = {};
// 根底包名
String packageName = “com.fengwenyi.studyspringbootmybatisplus.db”;
CommonUtils.execute(dbType, dbUrl, username, password, driver, tablePrefixes, tableNames, packageName, fieldPrefixes);
生成的文件
咱们将生成的文件拷贝到工程里
测试
@Autowired
private MPUserRepository mpUserRepository;
@Test
public void testSelectList() {
List<UserEntity> list = mpUserRepository.list();
list.forEach(userEntity -> log.info(userEntity.toString()));
}
运行:
工程链接
代码生成器:mybatis-plus-code-generator:https://github.com/fengwenyi/mybatis-plus-code-generator
示 例 工 程:study-spring-boot-mybatis-plus:https://github.com/fengwenyi/study-spring-boot/tree/master/spring-boot-mybatis-plus