写点什么

使用 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 设置就行了。

发布于: 刚刚阅读数: 5
用户头像

Java、消息中间件、大数据、运维 2022.04.23 加入

华为云云享专家、51CTOtop红人、CSDN博主、2021年第十届“中国软件杯”大学生软件设计大赛-B3-高并发条件下消息队列的设计与实现国赛二等奖、2021年浙江省职业院校技能大赛高职组“大数据技术与应用”赛项一等奖

评论

发布
暂无评论
使用MyBatis-Plus代码生成器(数据库MySQL/Sqlite_Java_芝士味的椒盐_InfoQ写作社区