导入依赖:
<!--mybatis-plus: 3.0.3版本之后,移除了代码生成器和模板引擎的依赖,所以需要手动添加-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!--代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!--模板引擎依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
生成器:
/**
* mybatis-plus代码生成器
*/
public class CodeGenerator {
//要生成代码的表
private static String tables[] = {
// "tb_classes",
// "tb_college",
// "tb_comment",
// "tb_examination",
// "tb_grade",
// "tb_link",
// "tb_log",
// "tb_permission",
// "tb_profession",
// "tb_profession_category",
"tb_question",
// "tb_role",
// "tb_subject",
// "tb_sys",
// "tb_user"
};
public static void main(String[] args) {
generator();
}
public static void generator(){
//1.代码生成器
AutoGenerator generator = new AutoGenerator();
//2.全局配置
GlobalConfig globalConfig = new GlobalConfig();
String projectUrl = System.getProperty("user.dir"); //获取当前项目路径
globalConfig.setOutputDir(projectUrl + "/src/main/java"); //生成文件的根目录
globalConfig.setOpen(false); //生成完文件后不弹出文件框
globalConfig.setFileOverride(true); //是否覆盖文件
globalConfig.setAuthor("Linging"); //开发人员
globalConfig.setEnableCache(false); //是否在xml中开启二级缓存
globalConfig.setBaseResultMap(true); //是否在生成xml文件中生成属性与字段的映射
globalConfig.setBaseColumnList(false); //是否在生成xml文件中生成baseColumnList
globalConfig.setMapperName("%sMapper"); //指定生成的mapper接口名
globalConfig.setXmlName("%sMapper"); //指定生成的xml名
globalConfig.setServiceName("%sService"); //指定生成的service接口名
globalConfig.setServiceImplName("%sServiceImpl"); //指定生成的service接口实现类的名字
globalConfig.setControllerName("%sController"); //指定生成controller名
globalConfig.setIdType(IdType.AUTO); //指定生成的主键的ID类型
globalConfig.setDateType(DateType.ONLY_DATE); //util包下的时间
generator.setGlobalConfig(globalConfig);
//3.数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL); //数据库类型
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); //设置数据库驱动
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&useSSL=false&serverTimezone=UTC"); //设置数据库url
dataSourceConfig.setUsername("root"); //用户名
dataSourceConfig.setPassword("123456"); //密码
generator.setDataSource(dataSourceConfig);
//4.包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.linging.exam"); //父级包名
packageConfig.setController("controller"); //指定controller层包名字
packageConfig.setService("service"); //指定service层包名字
packageConfig.setServiceImpl("service.impl"); //指定impl包名字
packageConfig.setMapper("mapper"); //指定mapper包名字
packageConfig.setXml("mapper"); //指定xml包名字
packageConfig.setEntity("pojo"); //指定pojo包名字
generator.setPackageInfo(packageConfig);
//5.模板配置
//略.....
//6.策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel); //表名生成策略,下划线转驼峰命名
strategyConfig.setTablePrefix("tb_"); //去掉表前缀
strategyConfig.setInclude(tables); //需要生成的表名
strategyConfig.setChainModel(true); //实体是否为链式
//create_time字段和update_time字段自动生成
List<TableFill> fills = new ArrayList<TableFill>();
TableFill create_time = new TableFill("create_time", FieldFill.INSERT);
TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);
fills.add(create_time);
fills.add(update_time);
strategyConfig.setTableFillList(fills); //表填充字段
strategyConfig.setSuperMapperClass("");
strategyConfig.setSuperServiceClass("");
strategyConfig.setSuperServiceImplClass( "");
generator.setStrategy(strategyConfig);
//7.代码生成
generator.execute();
}
}