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>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.1</version>
</dependency>

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus</artifactId>
  <version>3.0.6</version>
</dependency>
 
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.0.6</version>
</dependency>
 

 

最后执行main()方法

posted @ 2019-10-17 18:28  朱思年  阅读(356)  评论(0编辑  收藏  举报