👨🏻🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟
🌈擅长领域:Java、大数据、运维、电子
🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!
🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
@[TOC]
自动代码生成器
- AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
- 由于代码生成器MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:
maven依赖
代码生成器依赖pom.xml:
- 添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。
Thymeleaf:
⚠️ Tips:注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。
MySQL代码生成器
- MySQL代码生成器
/**
* @author starrysky
* @title: MybatisPlusAutomaticGenerator
* @projectName mybaits_plus_final
* @description: mybatis-pluas代码自动生成器
* @date 2021/2/109:59
*/
public class MybatisPlusAutomaticGenerator {
public static void main(String[] args) {
/**
* 代码生成器对象
*/
AutoGenerator autoGenerator = new AutoGenerator();
/**
* 全局配置对象
*/
GlobalConfig globalConfig = new GlobalConfig();
String property = System.getProperty("user.dir");// 获取当前项目的系统目录
globalConfig.setOutputDir(property+"/src/main/java");
globalConfig.setAuthor("starrysky");
globalConfig.setOpen(false);//生成之后是否打开所在的系统目录
globalConfig.setFileOverride(false);//是否覆盖
globalConfig.setServiceName("%sService");//去掉Service的I前缀
globalConfig.setIdType(IdType.ASSIGN_ID);
globalConfig.setDateType(DateType.ONLY_DATE);//日期类型,仅仅是时间
globalConfig.setSwagger2(true);//配置swagger文档
autoGenerator.setGlobalConfig(globalConfig);
/**
* 设置数据源
*/
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("passwd");
dataSourceConfig.setUrl("jdbc:p6spy:mariadb://127.0.0.1:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&passwordCharacterEncoding=utf-8&serverTimezone=Asia/Shanghai");
dataSourceConfig.setDriverName("com.p6spy.engine.spy.P6SpyDriver");
dataSourceConfig.setDbType(DbType.MARIADB);
autoGenerator.setDataSource(dataSourceConfig);
/**
* 包的配置
*/
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("icu.lookyousmileface");
packageConfig.setModuleName("MyPro");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
packageConfig.setService("service");
packageConfig.setController("controller");
autoGenerator.setPackageInfo(packageConfig);
/**
* 配置策略
*/
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude("user");
strategyConfig.setNaming(NamingStrategy.underline_to_camel);//包的名字,下划线转驼峰
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//列的名字,下划线转驼峰
strategyConfig.setEntityLombokModel(true);//自动lombok
strategyConfig.setLogicDeleteFieldName("deleted");
TableFill craete_time = new TableFill("craete_time", FieldFill.INSERT);//自动填充配置插入
TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);//自动填充配置更新
List<TableFill> tableFils = new CopyOnWriteArrayList<>();
tableFils.add(craete_time);
tableFils.add(update_time);
strategyConfig.setTableFillList(tableFils);
strategyConfig.setVersionFieldName("version");//乐观锁
strategyConfig.setRestControllerStyle(true);//开启Restf的风格,驼峰命名
strategyConfig.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2
autoGenerator.setStrategy(strategyConfig);
/**
* 设置模版引擎
*/
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
/**
* 执行
*/
autoGenerator.execute();
}
}
Sqlite代码生成器
- Sqlite代码生成器
package icu.look.smile.uilts;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* @author starrysky
* @title: MybatisPlusAutomaticGenerator
* @projectName mybaits_plus_final
* @description: mybatis-pluas代码自动生成器
* @date 2021/2/109:59
*/
public class MybatisPlusAutomaticGenerator {
public static void main(String[] args) {
/**
* 代码生成器对象
*/
AutoGenerator autoGenerator = new AutoGenerator();
/**
* 全局配置对象
*/
GlobalConfig globalConfig = new GlobalConfig();
String property = System.getProperty("user.dir");// 获取当前项目的系统目录
globalConfig.setOutputDir(property+"/src/main/java");
globalConfig.setAuthor("starrysky");
globalConfig.setOpen(false);//生成之后是否打开所在的系统目录
globalConfig.setFileOverride(false);//是否覆盖
globalConfig.setServiceName("%sService");//去掉Service的I前缀
globalConfig.setIdType(IdType.AUTO);
globalConfig.setDateType(DateType.ONLY_DATE);//日期类型,仅仅是时间
globalConfig.setSwagger2(true);//配置swagger文档
autoGenerator.setGlobalConfig(globalConfig);
/**
* 设置数据源
*/
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:sqlite:db/main.db");
dataSourceConfig.setDriverName("org.sqlite.JDBC");
dataSourceConfig.setDbType(DbType.SQLITE);
autoGenerator.setDataSource(dataSourceConfig);
/**
* 包的配置
*/
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("icu.smile.autogen");
packageConfig.setModuleName("MyPro");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
packageConfig.setService("service");
packageConfig.setController("controller");
autoGenerator.setPackageInfo(packageConfig);
/**
* 配置策略
*/
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude("user_info");
strategyConfig.setNaming(NamingStrategy.underline_to_camel);//包的名字,下划线转驼峰
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//列的名字,下划线转驼峰
strategyConfig.setEntityLombokModel(true);//自动lombok
strategyConfig.setLogicDeleteFieldName("deleted");
TableFill craete_time = new TableFill("craete_time", FieldFill.INSERT);//自动填充配置插入
TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);//自动填充配置更新
List<TableFill> tableFils = new CopyOnWriteArrayList<>();
tableFils.add(craete_time);
tableFils.add(update_time);
strategyConfig.setTableFillList(tableFils);
strategyConfig.setVersionFieldName("version");//乐观锁
strategyConfig.setRestControllerStyle(true);//开启Restf的风格,驼峰命名
strategyConfig.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2
autoGenerator.setStrategy(strategyConfig);
/**
* 设置模版引擎
*/
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
/**
* 执行
*/
autoGenerator.execute();
}
}
注意⚠️ :其 使用和操作mysql差不多,就是无须设置密码,然后就是datasource的url、DriverName设置就行了。