使用 MyBatis-Plus 代码生成器(数据库 MySQL/Sqlite
- 2022 年 5 月 03 日
本文字数:4681 字
阅读完需:约 15 分钟
👨🏻🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟🌈擅长领域:Java、消息中间件、大数据、运维。
🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏。
🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
自动代码生成器
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
由于代码生成器 MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:
maven 依赖
代码生成器依赖 pom.xml:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.2</version>
</dependency>
添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。Thymeleaf:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
⚠️ 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 设置就行了。
版权声明: 本文为 InfoQ 作者【芝士味的椒盐】的原创文章。
原文链接:【http://xie.infoq.cn/article/a3c57dfce6c432e41b5369021】。文章转载请联系作者。
芝士味的椒盐
Java、消息中间件、大数据、运维 2022.04.23 加入
华为云云享专家、51CTOtop红人、CSDN博主、2021年第十届“中国软件杯”大学生软件设计大赛-B3-高并发条件下消息队列的设计与实现国赛二等奖、2021年浙江省职业院校技能大赛高职组“大数据技术与应用”赛项一等奖
评论