小言_互联网的博客

早点下班陪女朋友系列之Mybatis-plus代码生成器

417人阅读  评论(0)

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率,让程序员早点下班去陪女朋友~

官方文档地址:https://baomidou.com/guide/generator.html

官网已经很详细的介绍了代码生成器的用法,但有些细节还没有讲清楚,你按官网的方式去操作,不一定能成功,至少我是没有跑成功的

废话不多说,直接上代码吧

整体流程

先从整体上看一下,生成代码需要做哪些事情

public static void main(String[] args) {
        //1. 全局配置
        GlobalConfig config = globalConfig();
        //2. 数据源配置
        DataSourceConfig dsConfig = dataSourceConfig();
        //3.策略配置
        StrategyConfig stConfig = strategyConfig();
        //4.包名策略
        PackageConfig pkConfig = packageConfig();
        //5.整合配置
        new AutoGenerator().setGlobalConfig(config)
                .setDataSource(dsConfig)
                .setStrategy(stConfig)
                .setTemplateEngine(new FreemarkerTemplateEngine()) //设置模板引擎
                .setPackageInfo(pkConfig)
                .execute();
    }

从上面的步骤可以看出来,需要生成代码需要做相关的配置

  • 全局配置,配置一些全局的信息,比如作者、生成路径、主键策略等通用信息
  • 数据源配置,配置库连接相关信息
  • 策略配置,需要生成的表、表跟实体的映射策略等
  • 包名配置,可以配置父包名、entity、service、controller等的名称
  • 整合配置,最后一步就是需要把上面所有的配置都整合到一起,然后按设定的策略执行

除了上面的一些基本策略,还可以根据自己实际的情况进行自定义配置策略

下面来看一下,每一步具体的配置

1、全局配置

private static GlobalConfig globalConfig(){
        return new GlobalConfig()
                .setActiveRecord(true)
                .setAuthor("kxg") //作者
                .setOutputDir("E:\\workspace\\MyBatis-demo\\src\\main\\java")  //生成路径
                .setFileOverride(true)//是否文件覆盖,如果多次
                .setServiceName("%sService") //设置生成的service接口名首字母是否为I
                .setIdType(IdType.AUTO) //主键策略
                .setBaseResultMap(true)
                .setBaseColumnList(true);
    }

2、数据源配置

private static DataSourceConfig dataSourceConfig(){
        return new DataSourceConfig()
                .setDbType(DbType.MYSQL)
                .setDriverName("com.mysql.jdbc.Driver")
                .setUrl("jdbc:mysql://localhost:3306/testdb1")
                .setUsername("root")
                .setPassword("123456");
    }

3、策略配置

private static StrategyConfig strategyConfig(){
        return new StrategyConfig()
                .setCapitalMode(true) // 全局大写命名
                .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
                .setInclude("tb_user") //生成的表名,多个用逗号隔开
                .setTablePrefix("tb_"); // 表前缀
    }

策略配置还有很多其他的属性可以配置,具体可以查看一下StrategyConfig中的属性

4、包名配置

private static PackageConfig packageConfig(){
        return new PackageConfig()
                .setParent("com.kxg.mp.demo")//父包名
                .setController("controller")
                .setEntity("model")
                .setService("service")
                .setMapper("mapper")
                .setXml("mapper");
    }

经过以上配置,基本上就完成了一个最简单的代码生成器,很多网上的博客到这一步就完成了,如果此时运行代码是会报错的,因为还漏掉了很重要的一个步骤,包括官方网站上也没有对这一个步骤做详细说明

这一步就是模板,代码生成器是需要依赖模板的,也就是你的controller、service、mapper这些生成的文件,都是通过对应的模板来进行生成的,没有模板当然就不可能生成代码了

那模板在哪里呢?其实就在你的项目里面,怎么说呢?它包含在你引入的mybatis-plus-generator的jar包中,如图所示

在templates目录下,是所有的默认模板,你需要把模板Copy到你的项目中(不知道还有没有更好的方法)

这里以FreeMarker为例,把.ftl文件类的模板全部拷贝到你项目的/resources/templates目录下,就会读取到

这些默认的模板里面只包括了最基本的信息,你可以对模板进行修改来实现你自定义的模板

这里需要注意一下,如果你选择使用FreeMarker作为代码生成的模板,你就需要设置一下模板引擎

//5.整合配置
new AutoGenerator().setGlobalConfig(config)
        .setDataSource(dsConfig)
        .setStrategy(stConfig)
        .setTemplateEngine(new FreemarkerTemplateEngine()) //设置模板引擎
        .setPackageInfo(pkConfig)
        .execute();

当然你也可以选择其他的模板引擎,mybaits-plus支持 Velocity、Freemarker、Beetl这几种模板,默认是Velocity

好了,到这里就可以运行上面的代码了,运行之后的结果如下:

如果感觉对你有些帮忙,请收藏好,你的关注和点赞是对我最大的鼓励!
如果想跟我一起学习,坚信技术改变世界,请关注【Java天堂】公众号,我会定期分享自己的学习成果,第一时间推送给您


转载:https://blog.csdn.net/pzjtian/article/details/108210992
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场