package spring.server.consumer;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class MybatisPlusGenerator { /**
* 项目路径 修改为你项目的实际绝对路径
*
*/
private static String canonicalPath = "C:\\Spring\\spring-server-consumer"; /**
* 基本包名
*/
private static String basePackage = "spring.server.consumer"; /**
* 作者
*/
private static String authorName = "sxy"; /**
* table前缀
*/
private static String[] prefix = {""}; /**
* 数据库类型
*/
private static DbType dbType = DbType.MYSQL; /**
* 数据库配置四要素
*/
private static String driverName = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/mysqltest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false";
private static String username = "root";
private static String password = "123456"; public static void main(String[] args) { String[] tables = getTables();
// 代码生成器
AutoGenerator mpg = new AutoGenerator(); /**
* 获取项目路径
*/
try {
canonicalPath = new File("").getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
} // 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(canonicalPath + "/src/main/java");
globalConfig.setFileOverride(false);
globalConfig.setActiveRecord(true);
globalConfig.setEnableCache(false);
globalConfig.setBaseResultMap(true);
globalConfig.setBaseColumnList(true);
globalConfig.setOpen(true);
globalConfig.setAuthor(authorName);
globalConfig.setMapperName("%sMapper");
globalConfig.setXmlName("%sMapper");
globalConfig.setServiceName("I%sService");
globalConfig.setServiceImplName("%sServiceImpl");
globalConfig.setControllerName("%sController");
globalConfig.setSwagger2(true);
mpg.setGlobalConfig(globalConfig); // 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDriverName(driverName);
dataSourceConfig.setDbType(dbType);
dataSourceConfig.setUrl(url);
dataSourceConfig.setUsername(username);
dataSourceConfig.setPassword(password);
mpg.setDataSource(dataSourceConfig); // 包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent(basePackage);
packageConfig.setController("controller");
packageConfig.setEntity("entity");
packageConfig.setMapper("dao");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl"); mpg.setPackageInfo(packageConfig); // 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
}; /**
* 注入自定义配置
*/
// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
InjectionConfig abc = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
this.setMap(map);
}
};
//自定义文件输出位置(非必须)
List<FileOutConfig> fileOutList = new ArrayList<FileOutConfig>();
fileOutList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return canonicalPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper.xml";
}
});
abc.setFileOutConfigList(fileOutList);
mpg.setCfg(abc); // 配置模板
TemplateConfig templateConfig = new TemplateConfig(); // 配置自定义输出模板
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
// templateConfig.setEntity("templates/entity2.java");
// templateConfig.setService();
// templateConfig.setController(); templateConfig.setXml(null);
mpg.setTemplate(templateConfig); // 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setTablePrefix(prefix);
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setInclude(tables); strategyConfig.setEntityBuilderModel(true);
strategyConfig.setRestControllerStyle(true);
mpg.setStrategy(strategyConfig);
mpg.execute();
} public static String[] getTables()
{
ArrayList tables=new ArrayList();
try
{
Class.forName(driverName); Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mysqltest?user=root&password=123456");
Statement stmt = conn.createStatement(); //getTableNameByCon(conn);
ResultSet rs = stmt.executeQuery("show tables; "); while (rs.next()) {
String tableName= rs.getString(1);
tables.add(tableName);
}
Object[] arrayAreas= tables.toArray();
String[] tableNames=new String[arrayAreas.length];
for (int i=0;i<arrayAreas.length;i++)
{
tableNames[i]=arrayAreas[i].toString();
}
return tableNames; }
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
}

MybatisPlus使用代码篇的更多相关文章

  1. 小书MybatisPlus第3篇-自定义SQL

    本文档为一个系列,前面章节: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 书接上回,虽然Mybatis Plu ...

  2. 小书MybatisPlus第7篇-代码生成器的原理精讲及使用方法

    本文是本系列文章的第七篇,前6篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小书Mybatis ...

  3. TODO:一不顺眼就换字体Go之代码篇

    TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述:新增字体font,进行 ...

  4. Netty实现高性能IOT服务器(Groza)之精尽代码篇中

    运行环境: JDK 8+ Maven 3.0+ Redis 技术栈: SpringBoot 2.0+ Redis (Lettuce客户端,RedisTemplate模板方法) Netty 4.1+ M ...

  5. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  6. C# webApi上传图片 代码篇

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 代码篇,不多说 如下: using System; using System.Collections.Generic; using System.D ...

  7. 平衡二叉树,AVL树之代码篇

    看完了第一篇博客,相信大家对于平衡二叉树的插入调整以及删除调整已经有了一定的了解,下面,我们开始介绍代码部分. 首先,再次提一下使用的结构定义 typedef char KeyType; //关键字 ...

  8. phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合

    建议读者,先阅读官方文档,知晓其支付流程之后再来使用此代码,比方客户须要做什么,服务端须要做什么(非常重要!非常重要! 非常重要!),由于这几个篇幅都是纯代码篇,由于阅读前面的入门篇之后看这些应该毫无 ...

  9. phonegap(cordova) 自己定义插件代码篇(六)----android ,iOS 微信支付工具整合

    还是那句话,在使用插件代码篇的时候,请先了解插件机制(如整合原生插件先阅读原生插件文档.非常重要.非常重要!非常重要!),如未了解,请先阅读入门篇.这里就专贴关键代码 必须先把官方sdk 依照要求一步 ...

随机推荐

  1. sscanf功能详解(转)

    在处理字符串的程序当中,经常会分析字符串,从一大长串的字符串截取我们需要的数据,这如果通过自己手写函数来分析,虽然可以,但当你知道sscanf的功能,那就自己写函数分析就显得多此一举. 这些函数的使用 ...

  2. React组件:Dragact 0.1.4发布

    Dragact 是一款React组件,他能够使你简单.快速的构建出一款强大的 拖拽式网格(grid)布局. 仓库地址:Dragact 经过几天的迭代时间Dragact已经能够支持自由缩放功能了(res ...

  3. Newnode's NOI(P?)模拟赛 第二题 dp决策单调优化

    其实直接暴力O(n3)DP+O2O(n^3)DP+O_2O(n3)DP+O2​优化能过- CODE O(n3)O(n^3)O(n3) 先来个O(n3)O(n^3)O(n3)暴力DP(开了O2O_2O2 ...

  4. pro git 读书笔记 1

    Git 1 - Getting Started Git 的特点 Git 存储每个版本的快照:其他 VCS(版本控制系统) 存储两个版本的变化之处 好处参考 Git 分支章节 Git 几乎所有操作都是本 ...

  5. [Javascirpt] What’s new in JavaScript (Google I/O ’19)

    Private variable in class: class Counter { #count = 0; // cannot be access publicly get value () { r ...

  6. Prism框架的Module(模块化)编程

    Prism框架用的是新版本的,Prism7.1.关于其中的变动,感兴趣的参考https://www.cnblogs.com/hicolin/p/8694892.html 如何告诉Shell(我们的宿主 ...

  7. linux下防止rm-rf /删除,让人崩溃

    1.下载safe-rm软件: safe-rm下载地址: https://launchpad.net/safe-rm命令 wget -c https://launchpadlibrarian.net/1 ...

  8. vue子组件改变父组件的值

    1 在父组件的coment绑定事件 <template> <div :class="classObj" class="app-wrapper" ...

  9. JavaWeb_(Struts2框架)使用Servlet实现用户的登陆

    JavaWeb_(Struts2框架)使用Struts框架实现用户的登陆 传送门 JavaWeb_(Struts2框架)Servlet与Struts区别 传送门 MySQL数据库中存在Gary用户,密 ...

  10. oracle取出所有表和视图

    select c.TABLE_NAME, d.COMMENTS, d.table_type, (select wmsys.wm_concat(a.column_name) from user_cons ...