基于Mybatis plus 自动代码生成器的实现代码
作者:夏天的尾巴ljh 发布时间:2023-11-24 10:40:51
标签: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 自动代码生成器的实现代码,希望对大家有所帮助.
来源:https://blog.csdn.net/weixin_41685100/article/details/80342246
0
投稿
猜你喜欢
- 本文实例讲述了C#实现Base64处理的加密解密,编码解码。分享给大家供大家参考,具体如下:using System;using Syste
- 本文实例完成人机猜拳互动游戏的开发,供大家参考,具体内容如下阶段一:实验——分析业务,创建用户类1.分析业务,抽象出类、类的特征和行为2.创
- Java常用API介绍API概念什么是API?API(Application Programming interface) 应用程序编程接口
- 前言最近看插件库上少有的取色器大都是圆形的或者奇奇怪的的亚子,所以今天做两个矩形的颜色取色器提示:以下是本篇文章正文内容,下面案例可供参考一
- 这篇文章主要介绍了Java如何实现自定义异常类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,
- ObjectMapper 忽略字段大小写核心代码:ObjectMapper mapper = new ObjectMapper();mapp
- 1、什么是servlet异步请求Servlet 3.0 之前,一个普通 Servlet 的主要工作流程大致如下:(1)、Servlet 接收
- 在使用fastJson时,对于泛型的反序列化很多场景下都会使用到TypeReference,例如:void testTypeReferenc
- 本文介绍了详解Maven * Nexus的安装与使用,分享给大家,具体如下:1.安装1.1 安装docker并加速yum update &am
- 在实际开发中,我们经常会需要在页面跳转的时候携带路由参数,典型的例子就是从列表到详情页的时候,需要携带详情的 id,以便详情页获取对应的数据
- 背景公司线上有个tomcat服务,里面合并部署了大概8个微服务,之所以没有像其他微服务那样单独部署,其目的是为了节约服务器资源,况且这8个服
- HashMap的get()方法的NullPointerException今天写代码发现一个 bug,HashMap的 get() 方法一直报
- 目录栈溢出(虚拟机栈和本地方法栈)产生原因解决思路堆溢出产生原因解决思路方法区和运行时常量池溢出产生原因解决思路本机直接内存溢出产生原因解决
- 什么是FTPFTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.可以
- 一、什么是过滤器过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制
- 我们都知道mybatis在进行参数判断的时候,直接可以用<if test=""></if> 就可
- 一个非侵入的api编译、收集、Rest文档生成工具。工具通过分析代码和注释,获取文档信息,生成RestDoc文档前言程序员一直以来都有一个烦
- 目录1、IP地址2、端口3、通信协议3.1 TCP/IP协议簇:实际上是一组协议3.2 TCP UDP对比3.3 TCP实现聊天3.4 TC
- 该工具包含是封装了jedis,包含redis.properties和jedisPool,序列化使用的是protostuff,map类型操作使