package com.test;

import com.baomidou.mybatisplus.annotation.DbType;
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.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.junit.Test; import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties; /**
* @author zsn
* MyBatis-Plus 代码生成器
*/
public class MyBatisPlusVerifyCodeControllerGenerator {
//包名
private static final String BASE_PACKAGE = "com.xxx";
private static final String MAPPER_PACKAGE = "dao";
private static final String SERVICE_PACKAGE = "service";
private static final String CONTROLLER_PACKAGE = "controller";
private static final String ENTITY_PACKAGE = "entity";
private static final String XML_PACKAGE = "mapper";
  //输出文件的路径
private static final String OUT_PATH = System.getProperty("user.dir") + "/src/main/java";
//代码生成者
private static final String AUTHOR = "张三";
// 需要生成代码的表的名字
private static final String[] INCLUDE_TABLE = {"tb_maintenance_type", "tb_maintenance_order", "tb_staff_plumber"};
//JDBC相关配置
private static String driver;
private static String url;
private static String user;
private static String password;
// private static final String[] EXCLUDE_TABLE = {"test"}; static {
Properties properties = new Properties();
try {
properties.load(new FileReader("src/main/resources/mysql.properties"));
driver = properties.getProperty("driver");
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
// 全局配置:设置作者、输出路径、是否重写等属性
GlobalConfig globalConfig = new GlobalConfig().setOutputDir(OUT_PATH)// 输出目录
.setFileOverride(true)// 是否覆盖文件
.setActiveRecord(true) // 开启 activeRecord 模式
// .setEnableCache(false) // XML 二级缓存
// .setBaseResultMap(false) // XML ResultMap
// .setBaseColumnList(true) // XML columList
.setAuthor(AUTHOR)
.setIdType(IdType.AUTO)//主键策略
.setXmlName("%sMapper")
.setMapperName("%sDao")
.setServiceName("%sService") //设置service接口名字首字母没有I
.setServiceImplName("%sServiceImpl")
.setControllerName("%sController");
// 数据源配置
DataSourceConfig dataSource = new DataSourceConfig()
.setDbType(DbType.MYSQL)// 数据库类型
.setUrl(url)
.setDriverName(driver)
.setUsername(user)
.setPassword(password)
.setTypeConvert(new MySqlTypeConvert() {
@Override
public IColumnType processTypeConvert(GlobalConfig globalConfig, String
fieldType) {// 自定义数据库表字段类型转换(可选)
System.out.println("转换类型:" + fieldType);
// if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
// return DbColumnType.BOOLEAN;
// }
return super.processTypeConvert(globalConfig, fieldType);
}
});
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig()
.setCapitalMode(true)// 全局大写命名
.setTablePrefix("tb_")//表名前缀
.setEntityLombokModel(true)//使用lombok,如果没有集成Lombok,可以设置为false
.setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
.setInclude(INCLUDE_TABLE) // 需要生成的表
// .setExclude(EXCLUDE_TABLE) // <include> 与 <exclude> 只能配置一项
// -------------- ② -------------
// .setEntityColumnConstant(true) // 【实体】是否生成字段常量(默认 false)
// .setSuperEntityClass("com.hc.bean.BaseEntity") //自定义实体父类
// .setSuperEntityColumns(new String[]{"test_id"}) // 自定义实体,公共字段
// .setSuperMapperClass("com.hc.bean.BaseMapper") //自定义mapper父类
// .setSuperServiceClass("com.hc.bean.BaseService") //自定义service父类
// .setSuperServiceImplClass("com.hc.bean.BaseServiceImpl") //自定义service实现类父类
// .setSuperControllerClass("com.hc.bean.TestController")//自定义controller父类
// .setEntityBuilderModel(true) // 【实体】是否为构建者模型(默认 false)
// .setEntityBooleanColumnRemoveIsPrefix(true)//是否移除Boolean类型is前缀
// .setRestControllerStyle(true)
// .setControllerMappingHyphenStyle(true)
;
// 包配置
PackageConfig packageConfig = new PackageConfig()
// .setModuleName(MODULE_NAME)
.setParent(BASE_PACKAGE) // 自定义包路径
.setEntity(ENTITY_PACKAGE)
.setMapper(MAPPER_PACKAGE)
.setXml(XML_PACKAGE)
.setService(SERVICE_PACKAGE)
.setController(CONTROLLER_PACKAGE);// 这里是控制器包名 AutoGenerator mpg = new AutoGenerator()
.setGlobalConfig(globalConfig)
.setDataSource(dataSource)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig)//进行包设置
.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute(); // 执行生成
} public static List<String> getAllTableNamesByDatabase(String databaseName) throws Exception {
List<String> tables = new ArrayList();
Connection conn = getConnection();
PreparedStatement ps = conn.prepareStatement("select table_name from information_schema.TABLES where TABLE_SCHEMA=?");
ps.setString(1, databaseName);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
tables.add(rs.getString("TABLE_NAME"));
}
closeAll(conn, ps, rs);
return tables;
} public static Connection getConnection() throws Exception {
Class.forName(driver);
return DriverManager.getConnection(url, user, password);
} public static void closeAll(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
} /////////////////////////////////////下面代码用来产生表名////////////////////////////////////////////////////////////
@Test
public void fun() throws Exception {
List<String> db_test= getAllTableNamesByDatabase("db_test");
db_test.forEach(item -> System.out.print("\"" + item + "\","));
} }

在resource目录创建mysql.properties配置文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&useUnicode=true
user=root
password=root

代码生成需要依赖 freemarker 否则报异常:java.lang.NoClassDefFoundError: freemarker/template/Configuration

springboot:使用以下方式添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>

最后执行main()方法

最新文章

  1. (转)如何学习Java技术?谈Java学习之路
  2. CSS3 让图片镜像对称
  3. Correlation Filter in Visual Tracking
  4. Oracle同义词学习
  5. 【转】自定义iOS的Back按钮(backBarButtonItem)和pop交互手势(interactivepopgesturerecognizer) --- 不错
  6. &amp;lt;源代码&amp;gt;FTPclient追加方式上传自己定义信息
  7. Xamarin.forms 自定义dropdownview控件
  8. Js Date泣血整理
  9. Android开源框架Volley(Google IO 2013)源代码及内部实现分析
  10. 使用firbug调试程序写更高质量的代码设置方法
  11. Mysql数据库查询不区分大小写解决方案
  12. Codeforces Round #411 (Div. 1) D. Expected diameter of a tree
  13. Spark-1.6.0之Application运行信息记录器JobProgressListener
  14. robotframework导入测试库使用方法
  15. 通过LRU实现通用高效的超时连接探测
  16. cookie应用——UI中查询条件的保存
  17. Mac上tesseract-OCR的安装配置
  18. set non-stop on
  19. PAT B1022 D进制的A+B (20 分)
  20. linux create a process

热门文章

  1. python写入文件中遇到 UnicodeEncodeError: ‘gbk’ codec can’t encode character 错误的解决办法
  2. Spring Boot FreeMarker 使用教程
  3. 11. 搭建一个完整的K8S集群
  4. GO Range
  5. Java学习资源 - 测试
  6. STC8
  7. 【转载】五分钟让你彻底了解TDD、ATDD、BDD&amp;RBE
  8. vue.js 第十课-第十六课
  9. 【C++初学者自学笔记二】函数重载(模块一)
  10. 「模板」可持久化 HFQ-Treap