MyBatis-Plus之代码生成器

为什么要有代码生成器

代码生成器解决什么样的问题

MyBatis一样,解决重复性代码编写的时间成本和易错问题。

MyBatis-Plus的代码生成器说明

本次我使用的还是低版本2.1.9,
目前MyBatis-Plus最新版本为3.3.1。
理由很简单,够用。不想盲目的追赶高版本,同时高版本伴随着的不稳定性的存在,企业级应用开发是不允许这样的风险存在,毕竟开发的东西是要给客户用的,稳定性压倒一切。这个低版本我用了两年多时间,不仅仅在我自己的项目中用,我所待过的公司也用,基本上就没出现因版本问题导致代码不稳定性错误。

代码生成器实现

引入Maven依赖

        <dependency>

<artifactId>velocity</artifactId>

<groupId>org.apache.velocity</groupId>

<version>1.7</version>

</dependency>

<!-- mysql驱动 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.47</version>

</dependency>

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus-boot-starter</artifactId>

<version>2.1.9</version>

</dependency>

代码例子(单元测试或main方法就能运行并生成对应的代码,有对应的注释说明代码的意思)

package com.springcloud.blog.code.generator;

import com.baomidou.mybatisplus.enums.FieldFill;

import com.baomidou.mybatisplus.generator.AutoGenerator;

import com.baomidou.mybatisplus.generator.InjectionConfig;

import com.baomidou.mybatisplus.generator.config.DataSourceConfig;

import com.baomidou.mybatisplus.generator.config.FileOutConfig;

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.TemplateConfig;

import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;

import com.baomidou.mybatisplus.generator.config.po.TableFill;

import com.baomidou.mybatisplus.generator.config.po.TableInfo;

import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;

import com.baomidou.mybatisplus.generator.config.rules.DbType;

import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.*;

public class Generator {

public static void main(String[] args) {

// 自定义需要填充的字段

List<TableFill> tableFillList = new ArrayList<>();

tableFillList.add(new TableFill("ASDD_SS", FieldFill.INSERT_UPDATE));

// 代码生成器

AutoGenerator mpg = new AutoGenerator().setGlobalConfig(

// 全局配置

new GlobalConfig()

.setOutputDir("D://代码生成器")//输出目录

.setFileOverride(true)// 是否覆盖文件

.setActiveRecord(true)// 开启 activeRecord 模式

.setEnableCache(false)// XML 二级缓存

.setBaseResultMap(true)// XML ResultMap

.setBaseColumnList(true)// XML columList

.setAuthor("youcong")

// 自定义文件命名,注意 %s 会自动填充表实体属性!

.setMapperName("%sDao")

.setXmlName("%sDao")

.setServiceName("%sService")

.setServiceImplName("%sServiceImpl")

.setControllerName("%sController")

).setDataSource(

// 数据源配置

new DataSourceConfig()

.setDbType(DbType.MYSQL)// 数据库类型

.setTypeConvert(new MySqlTypeConvert() {

// 自定义数据库表字段类型转换【可选】

@Override

public DbColumnType processTypeConvert(String fieldType) {

System.out.println("转换类型:" + fieldType);

// if ( fieldType.toLowerCase().contains( "tinyint" ) ) {

// return DbColumnType.BOOLEAN;

// }

return super.processTypeConvert(fieldType);

}

})

.setDriverName("com.mysql.jdbc.Driver")

.setUsername("root")

.setPassword("123456")

.setUrl("jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=utf8")

).setStrategy(

// 策略配置

new StrategyConfig()

// .setCapitalMode(true)// 全局大写命名

// .setDbColumnUnderline(true)//全局下划线命名

.setTablePrefix(new String[]{"wp_"})// 此处可以修改为您的表前缀

.setNaming(NamingStrategy.underline_to_camel)// 表名生成策略

// .setInclude("wechat_reply") //指定生成表,注释掉或不写,默认生成所有

// .setExclude(new String[]{"test"}) // 排除生成的表

// 自定义实体父类

// .setSuperEntityClass("com.baomidou.demo.TestEntity")

// 自定义实体,公共字段

// .setSuperEntityColumns(new String[]{"id"})

.setTableFillList(tableFillList)

).setPackageInfo(

// 包配置

new PackageConfig()

.setParent("com.springcloud.blog")// 自定义包路径

.setController("controller")// 这里是控制器包名,默认 web

.setMapper("dao")

.setEntity("entity")

.setService("service")

.setServiceImpl("service.impl")

).setCfg(

// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值

new InjectionConfig() {

@Override

public void initMap() {

Map<String, Object> map = new HashMap<>();

map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "");

this.setMap(map);

}

}.setFileOutConfigList(Collections.<FileOutConfig>singletonList(new FileOutConfig("/templates/mapper.xml.vm") {

// 自定义输出文件目录

@Override

public String outputFile(TableInfo tableInfo) {

return "D://代码生成器//" + tableInfo.getEntityName() + "Dao.xml";

}

}))

).setTemplate(

// 关闭默认 xml 生成,调整生成 至 根目录

new TemplateConfig().setXml(null)

);

// 执行生成

mpg.execute();

// 打印注入设置,这里演示模板里面怎么获取注入内容【可无】

System.err.println(mpg.getCfg().getMap().get("abc"));

}

}

生成效果图,如下:
image.png

以上是 MyBatis-Plus之代码生成器 的全部内容, 来源链接: utcz.com/a/48505.html

回到顶部