基于Mybatis plus 自动代码生成器的实现代码

1.使用的是maven项目,添加依赖

<!-- mybatis-plus begin -->

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus</artifactId>

<version>2.2.0</version>

</dependency>

还有数据库的连接

<dependency>

<groupId>mysql</groupId>

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

<scope>compile</scope>

</dependency>

最后是源码

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.rules.DbType;

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

import org.junit.jupiter.api.Test;

/**

* mybatis-plus 自动生成代码

*

* @author Terry

* @version 1.0

* @date 2018-05-16 09:35

*/

public class SimpleMp {

@Test

public void generateCode() {

//指定包名

String packageName = "com.hciot.hhhh";

//user -> UserService, 设置成true: user -> IUserService

boolean serviceNameStartWithI = false;

//指定生成的表名

String[] tableNames = new String[]{"data_air_sensor_co", "order_product", "relation_device_gateway"};

generateByTables(serviceNameStartWithI, packageName, tableNames);

}

/**

* 根据表自动生成

*

* @param serviceNameStartWithI 默认为false

* @param packageName 包名

* @param tableNames 表名

* @author Terry

*/

private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {

//配置数据源

DataSourceConfig dataSourceConfig = getDataSourceConfig();

// 策略配置

StrategyConfig strategyConfig = getStrategyConfig(tableNames);

//全局变量配置

GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI);

//包名配置

PackageConfig packageConfig = getPackageConfig(packageName);

//自动生成

atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig);

}

/**

* 集成

*

* @param dataSourceConfig 配置数据源

* @param strategyConfig 策略配置

* @param config 全局变量配置

* @param packageConfig 包名配置

* @author Terry

*/

private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) {

new AutoGenerator()

.setGlobalConfig(config)

.setDataSource(dataSourceConfig)

.setStrategy(strategyConfig)

.setPackageInfo(packageConfig)

.execute();

}

/**

* 设置包名

*

* @param packageName 父路径包名

* @return PackageConfig 包名配置

* @author Terry

*/

private PackageConfig getPackageConfig(String packageName) {

return new PackageConfig()

.setParent(packageName)

.setXml("mapper")

.setMapper("dao")

.setController("controller")

.setEntity("entity");

}

/**

* 全局配置

*

* @param serviceNameStartWithI false

* @return GlobalConfig

* @author Terry

*/

private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) {

GlobalConfig globalConfig = new GlobalConfig();

globalConfig

.setBaseColumnList(true)

.setBaseResultMap(true)

.setActiveRecord(false)

.setAuthor("Terry")

//设置输出路径

.setOutputDir(getOutputDir("mybatis-plus"))

.setFileOverride(true);

if (!serviceNameStartWithI) {

//设置service名

globalConfig.setServiceName("%sService");

}

return globalConfig;

}

/**

* 返回项目路径

*

* @param projectName 项目名

* @return 项目路径

* @author Terry

*/

private String getOutputDir(String projectName) {

String path = this.getClass().getClassLoader().getResource("").getPath();

int index = path.indexOf(projectName);

return path.substring(1, index) + projectName + "/src/main/java/";

}

/**

* 策略配置

*

* @param tableNames 表名

* @return StrategyConfig

* @author Terry

*/

private StrategyConfig getStrategyConfig(String... tableNames) {

return new StrategyConfig()

// 全局大写命名 ORACLE 注意

.setCapitalMode(true)

.setEntityLombokModel(false)

// 表名、字段名、是否使用下划线命名(默认 false)

.setDbColumnUnderline(true)

//从数据库表到文件的命名策略

.setNaming(NamingStrategy.underline_to_camel)

//需要生成的的表名,多个表名传数组

.setInclude(tableNames);

}

/**

* 配置数据源

*

* @return 数据源配置 DataSourceConfig

* @author Terry

*/

private DataSourceConfig getDataSourceConfig() {

String dbUrl = "jdbc:mysql://localhost:3306/test";

return new DataSourceConfig().setDbType(DbType.MYSQL)

.setUrl(dbUrl)

.setUsername("root")

.setPassword("root")

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

}

/**

* 根据表自动生成

*

* @param packageName 包名

* @param tableNames 表名

* @author Terry

*/

@SuppressWarnings("unused")

private void generateByTables(String packageName, String... tableNames) {

generateByTables(true, packageName, tableNames);

}

}

总结

以上所述是小编给大家介绍的基于Mybatis plus 自动代码生成器的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是 基于Mybatis plus 自动代码生成器的实现代码 的全部内容, 来源链接: utcz.com/z/359933.html

回到顶部