MyBatisPlus代码生成 mvc项目
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()方法
MyBatisPlus代码生成 mvc项目的更多相关文章
- spring boot项目使用mybatis-plus代码生成实例
前言 mybatis-plus官方地址 https://baomidou.com mybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实 ...
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
C#编译器优化那点事 使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- MVC项目中ExecutionTimeout不生效的解决方案
我们做web服务器端开发时,经常会遇到一个需求场景,因为某些耗时处理造成页面的响应处理时间超长,技术角度就想能否给页面处理程序一个指定的超时时间,服务端处理程序执行时间超过这个指定的超时时间则中断处理 ...
- ASP.NET MVC项目实践技巧
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com 在.NET开发初期,微软提供的WEB开发模型是WebForm,试图消除Web和桌面的隔阂,建立一致的开发体验.但是 ...
- AngularJS2 + ASP.NET MVC项目
环境:VS2015, NodeJS:v 6.5, npm: v3.10, AngularJs 2 通过将ASP.NET MVC项目与Angualr 2官网上的quick start整合的过程中遇到些问 ...
- IntelliJ IDEA上创建maven Spring MVC项目
IntelliJ IDEA上创建Maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.x ...
- 远程调试 ASP.NET MVC 项目
Visual Studio 支持从一台计算机到另一台设备的远程调试.进行远程调试时,主机可以是任何支持 Visual Studio 的平台.远程设备可以是 x86.x64 或 ARM 平台. 本文将指 ...
- Visual Studio 2015 新建MVC项目 Package Manager Console不能使用 (HRESULT: 0x80131500)
Visual studio 2015 突然新建不了MVC项目,报出错误: HRESULT: 0x80131500 在折腾了很长时间,最后在Github上看到这样一个贴 地址:https://githu ...
随机推荐
- Executor、Executors、ExecutorService多线程操作
Executor:一个接口,其定义了一个接收Runnable对象的方法executor,其方法签名为executor(Runnable command),该方法接收一个Runable实例,它用来执行一 ...
- spring boot中配置文件中变量的引用
配置文件中 变量的自身引用 ${名称} java文件中引用:非静态变量 之间在变量上面注释@Value("${名称}") 静态变量 在set方法上注释@Value("$ ...
- 案例:WLC HA主WLC进入维护模式
案例场景: 如图所示,7609-1和7609-2分别是网络中的核心设备,起了HSRP,7609-1连接的是WLC-1,,7609-2连接的是WLC-2,WLC1和WLC2的RP口相互连接. WLC的管 ...
- 在Visual Studio 2017中,.NET(C#)通过Oracle.ManagedDataAccess来连接Oracle数据库
C#如何通过Oracle.ManagedDataAccess来连接Oracle数据库 1.先创建一个项目,鼠标右击项目中的引用,再点击管理NuGet程序包(也可以先下载dll文件,再选添加引用),在搜 ...
- 【SSM】日志框架 logback
logback.xml <?xml version="1.0" encoding="UTF-8" ?> <configuration scan ...
- iOS 开发之 生产者与消费者模式及其实现
概念: 在工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产者:而处理数据的 ...
- [运维] 如何将 Linux 上的 nginx 变成 静态资源服务器 (二)
环境 虚拟机上运行 Linux centos 7 64 已经安装 nginx-1.16.1.tar.gz 具体的安装过程可以参考 https://www.cnblogs.com/unityworld ...
- springboot devtool热部署的一个大坑
spring.devtools.restart.poll-interval=3000ms spring.devtools.restart.quiet-period=2999ms 别问我为什么,问就是一 ...
- cubic-bezier 个人学习理解
cubic-bezier 三次贝塞尔曲线函数,是一种动画的速度曲线.根据动画设置的时间,速度相应变化 四个点 P0,P1,P2,P3,其中P0是起点,坐标(0,0),P3是终点,坐标(1,1) PI和 ...
- Java中短路
当使用逻辑运算符时,我们会遇到一种“短路”的现象.即一旦能够准确无误的确定整个表达式的值,就不再计算表达式余下的部分了.因此整个表达式靠后的部分有可能不被运算 /**短路 * @param args ...