代码生成功能,增加创建表的功能。

master
liuzongqi 2021-09-26 16:04:44 +08:00
parent 61007b2905
commit 912366563b
8 changed files with 1244 additions and 1134 deletions

View File

@ -1,34 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<version>4.7.0</version> <version>4.7.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-generator</artifactId> <artifactId>ruoyi-generator</artifactId>
<description> <description>
generator代码生成 generator代码生成
</description> </description>
<dependencies> <dependencies>
<!--velocity代码生成使用模板 --> <!--velocity代码生成使用模板 -->
<dependency> <dependency>
<groupId>org.apache.velocity</groupId> <groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId> <artifactId>velocity</artifactId>
</dependency> </dependency>
<!-- 通用工具--> <!-- 通用工具-->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>ruoyi-common</artifactId>
</dependency> </dependency>
</dependencies> <!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
</dependencies>
</project> </project>

View File

@ -30,6 +30,11 @@ import com.ruoyi.generator.domain.GenTable;
import com.ruoyi.generator.domain.GenTableColumn; import com.ruoyi.generator.domain.GenTableColumn;
import com.ruoyi.generator.service.IGenTableColumnService; import com.ruoyi.generator.service.IGenTableColumnService;
import com.ruoyi.generator.service.IGenTableService; import com.ruoyi.generator.service.IGenTableService;
import com.alibaba.druid.DbType;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement;
import com.alibaba.fastjson.JSON;
/** /**
* *
@ -106,6 +111,15 @@ public class GenController extends BaseController
return prefix + "/importTable"; return prefix + "/importTable";
} }
/**
*
*/
@GetMapping("/createTable")
public String createTable() {
return prefix + "/createTable" ;
}
/** /**
* *
*/ */
@ -175,6 +189,32 @@ public class GenController extends BaseController
return AjaxResult.success(); return AjaxResult.success();
} }
@Log(title = "创建表", businessType = BusinessType.OTHER)
@PostMapping("/createTable")
@ResponseBody
public AjaxResult create(String sql) {
List<SQLStatement> sqlStatements = SQLUtils.parseStatements(sql, DbType.mysql);
List<String> tableNames = new ArrayList<>();
for (SQLStatement sqlStatement : sqlStatements) {
if (sqlStatement instanceof MySqlCreateTableStatement) {
MySqlCreateTableStatement sqlStatement1 = (MySqlCreateTableStatement) sqlStatement;
String tableName = sqlStatement1.getTableName();
tableName = tableName.replaceAll("`", "");
int msg = genTableService.createTable(sqlStatement1.toString());
if (msg == 0) {
tableNames.add(tableName);
}
} else {
return AjaxResult.error("请输入建表语句");
}
}
List<GenTable> tableList = genTableService.selectDbTableListByNames(
(tableNames.toArray(new String[tableNames.size()])));
genTableService.importGenTable(tableList, "admin");
return AjaxResult.success();
}
/** /**
* *
*/ */

View File

@ -1,83 +1,91 @@
package com.ruoyi.generator.mapper; package com.ruoyi.generator.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTable;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface GenTableMapper public interface GenTableMapper
{ {
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public List<GenTable> selectGenTableList(GenTable genTable); public List<GenTable> selectGenTableList(GenTable genTable);
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public List<GenTable> selectDbTableList(GenTable genTable); public List<GenTable> selectDbTableList(GenTable genTable);
/** /**
* *
* *
* @param tableNames * @param tableNames
* @return * @return
*/ */
public List<GenTable> selectDbTableListByNames(String[] tableNames); public List<GenTable> selectDbTableListByNames(String[] tableNames);
/** /**
* *
* *
* @return * @return
*/ */
public List<GenTable> selectGenTableAll(); public List<GenTable> selectGenTableAll();
/** /**
* ID * ID
* *
* @param id ID * @param id ID
* @return * @return
*/ */
public GenTable selectGenTableById(Long id); public GenTable selectGenTableById(Long id);
/** /**
* *
* *
* @param tableName * @param tableName
* @return * @return
*/ */
public GenTable selectGenTableByName(String tableName); public GenTable selectGenTableByName(String tableName);
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public int insertGenTable(GenTable genTable); public int insertGenTable(GenTable genTable);
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public int updateGenTable(GenTable genTable); public int updateGenTable(GenTable genTable);
/** /**
* *
* *
* @param ids ID * @param ids ID
* @return * @return
*/ */
public int deleteGenTableByIds(Long[] ids); public int deleteGenTableByIds(Long[] ids);
/**
*
*
* @param sql
* @return
*/
public int createTable(String sql);
} }

View File

@ -1,121 +1,129 @@
package com.ruoyi.generator.service; package com.ruoyi.generator.service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTable;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface IGenTableService public interface IGenTableService
{ {
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public List<GenTable> selectGenTableList(GenTable genTable); public List<GenTable> selectGenTableList(GenTable genTable);
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public List<GenTable> selectDbTableList(GenTable genTable); public List<GenTable> selectDbTableList(GenTable genTable);
/** /**
* *
* *
* @param tableNames * @param tableNames
* @return * @return
*/ */
public List<GenTable> selectDbTableListByNames(String[] tableNames); public List<GenTable> selectDbTableListByNames(String[] tableNames);
/** /**
* *
* *
* @return * @return
*/ */
public List<GenTable> selectGenTableAll(); public List<GenTable> selectGenTableAll();
/** /**
* *
* *
* @param id ID * @param id ID
* @return * @return
*/ */
public GenTable selectGenTableById(Long id); public GenTable selectGenTableById(Long id);
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public void updateGenTable(GenTable genTable); public void updateGenTable(GenTable genTable);
/** /**
* *
* *
* @param ids ID * @param ids ID
* @return * @return
*/ */
public void deleteGenTableByIds(String ids); public void deleteGenTableByIds(String ids);
/** /**
* *
* *
* @param tableList * @param sql
* @param operName * @return
*/ */
public void importGenTable(List<GenTable> tableList, String operName); public int createTable(String sql);
/** /**
* *
* *
* @param tableId * @param tableList
* @return * @param operName
*/ */
public Map<String, String> previewCode(Long tableId); public void importGenTable(List<GenTable> tableList, String operName);
/** /**
* *
* *
* @param tableName * @param tableId
* @return * @return
*/ */
public byte[] downloadCode(String tableName); public Map<String, String> previewCode(Long tableId);
/** /**
* *
* *
* @param tableName * @param tableName
*/ * @return
public void generatorCode(String tableName); */
public byte[] downloadCode(String tableName);
/**
* /**
* *
* @param tableName *
*/ * @param tableName
public void synchDb(String tableName); */
public void generatorCode(String tableName);
/**
* /**
* *
* @param tableNames *
* @return * @param tableName
*/ */
public byte[] downloadCode(String[] tableNames); public void synchDb(String tableName);
/** /**
* *
* *
* @param genTable * @param tableNames
*/ * @return
public void validateEdit(GenTable genTable); */
} public byte[] downloadCode(String[] tableNames);
/**
*
*
* @param genTable
*/
public void validateEdit(GenTable genTable);
}

View File

@ -1,190 +1,194 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.generator.mapper.GenTableMapper"> <mapper namespace="com.ruoyi.generator.mapper.GenTableMapper">
<resultMap type="GenTable" id="GenTableResult"> <resultMap type="GenTable" id="GenTableResult">
<id property="tableId" column="table_id" /> <id property="tableId" column="table_id" />
<result property="tableName" column="table_name" /> <result property="tableName" column="table_name" />
<result property="tableComment" column="table_comment" /> <result property="tableComment" column="table_comment" />
<result property="subTableName" column="sub_table_name" /> <result property="subTableName" column="sub_table_name" />
<result property="subTableFkName" column="sub_table_fk_name" /> <result property="subTableFkName" column="sub_table_fk_name" />
<result property="className" column="class_name" /> <result property="className" column="class_name" />
<result property="tplCategory" column="tpl_category" /> <result property="tplCategory" column="tpl_category" />
<result property="packageName" column="package_name" /> <result property="packageName" column="package_name" />
<result property="moduleName" column="module_name" /> <result property="moduleName" column="module_name" />
<result property="businessName" column="business_name" /> <result property="businessName" column="business_name" />
<result property="functionName" column="function_name" /> <result property="functionName" column="function_name" />
<result property="functionAuthor" column="function_author" /> <result property="functionAuthor" column="function_author" />
<result property="genType" column="gen_type" /> <result property="genType" column="gen_type" />
<result property="genPath" column="gen_path" /> <result property="genPath" column="gen_path" />
<result property="options" column="options" /> <result property="options" column="options" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" /> <collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" />
</resultMap> </resultMap>
<resultMap type="GenTableColumn" id="GenTableColumnResult"> <resultMap type="GenTableColumn" id="GenTableColumnResult">
<id property="columnId" column="column_id" /> <id property="columnId" column="column_id" />
<result property="tableId" column="table_id" /> <result property="tableId" column="table_id" />
<result property="columnName" column="column_name" /> <result property="columnName" column="column_name" />
<result property="columnComment" column="column_comment" /> <result property="columnComment" column="column_comment" />
<result property="columnType" column="column_type" /> <result property="columnType" column="column_type" />
<result property="javaType" column="java_type" /> <result property="javaType" column="java_type" />
<result property="javaField" column="java_field" /> <result property="javaField" column="java_field" />
<result property="isPk" column="is_pk" /> <result property="isPk" column="is_pk" />
<result property="isIncrement" column="is_increment" /> <result property="isIncrement" column="is_increment" />
<result property="isRequired" column="is_required" /> <result property="isRequired" column="is_required" />
<result property="isInsert" column="is_insert" /> <result property="isInsert" column="is_insert" />
<result property="isEdit" column="is_edit" /> <result property="isEdit" column="is_edit" />
<result property="isList" column="is_list" /> <result property="isList" column="is_list" />
<result property="isQuery" column="is_query" /> <result property="isQuery" column="is_query" />
<result property="queryType" column="query_type" /> <result property="queryType" column="query_type" />
<result property="htmlType" column="html_type" /> <result property="htmlType" column="html_type" />
<result property="dictType" column="dict_type" /> <result property="dictType" column="dict_type" />
<result property="sort" column="sort" /> <result property="sort" column="sort" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
</resultMap> </resultMap>
<sql id="selectGenTableVo"> <sql id="selectGenTableVo">
select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table
</sql> </sql>
<select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult"> <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
<include refid="selectGenTableVo"/> <include refid="selectGenTableVo"/>
<where> <where>
<if test="tableName != null and tableName != ''"> <if test="tableName != null and tableName != ''">
AND lower(table_name) like lower(concat('%', #{tableName}, '%')) AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
</if> </if>
<if test="tableComment != null and tableComment != ''"> <if test="tableComment != null and tableComment != ''">
AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
</if> </if>
</where> </where>
</select> </select>
<select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult"> <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">
select table_name, table_comment, create_time, update_time from information_schema.tables select table_name, table_comment, create_time, update_time from information_schema.tables
where table_schema = (select database()) where table_schema = (select database())
AND table_name NOT LIKE 'QRTZ_%' AND table_name NOT LIKE 'gen_%' AND table_name NOT LIKE 'QRTZ_%' AND table_name NOT LIKE 'gen_%'
AND table_name NOT IN (select table_name from gen_table) AND table_name NOT IN (select table_name from gen_table)
<if test="tableName != null and tableName != ''"> <if test="tableName != null and tableName != ''">
AND lower(table_name) like lower(concat('%', #{tableName}, '%')) AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
</if> </if>
<if test="tableComment != null and tableComment != ''"> <if test="tableComment != null and tableComment != ''">
AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
</if> </if>
order by create_time desc order by create_time desc
</select> </select>
<select id="selectDbTableListByNames" resultMap="GenTableResult"> <select id="selectDbTableListByNames" resultMap="GenTableResult">
select table_name, table_comment, create_time, update_time from information_schema.tables select table_name, table_comment, create_time, update_time from information_schema.tables
where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database())
and table_name in and table_name in
<foreach collection="array" item="name" open="(" separator="," close=")"> <foreach collection="array" item="name" open="(" separator="," close=")">
#{name} #{name}
</foreach> </foreach>
</select> </select>
<select id="selectTableByName" parameterType="String" resultMap="GenTableResult"> <select id="selectTableByName" parameterType="String" resultMap="GenTableResult">
select table_name, table_comment, create_time, update_time from information_schema.tables select table_name, table_comment, create_time, update_time from information_schema.tables
where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database()) where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database())
and table_name = #{tableName} and table_name = #{tableName}
</select> </select>
<select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult"> <select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult">
SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
FROM gen_table t FROM gen_table t
LEFT JOIN gen_table_column c ON t.table_id = c.table_id LEFT JOIN gen_table_column c ON t.table_id = c.table_id
where t.table_id = #{tableId} order by c.sort where t.table_id = #{tableId} order by c.sort
</select> </select>
<select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult"> <select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult">
SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
FROM gen_table t FROM gen_table t
LEFT JOIN gen_table_column c ON t.table_id = c.table_id LEFT JOIN gen_table_column c ON t.table_id = c.table_id
where t.table_name = #{tableName} order by c.sort where t.table_name = #{tableName} order by c.sort
</select> </select>
<select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult"> <select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult">
SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
FROM gen_table t FROM gen_table t
LEFT JOIN gen_table_column c ON t.table_id = c.table_id LEFT JOIN gen_table_column c ON t.table_id = c.table_id
order by c.sort order by c.sort
</select> </select>
<insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId"> <insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId">
insert into gen_table ( insert into gen_table (
<if test="tableName != null">table_name,</if> <if test="tableName != null">table_name,</if>
<if test="tableComment != null and tableComment != ''">table_comment,</if> <if test="tableComment != null and tableComment != ''">table_comment,</if>
<if test="className != null and className != ''">class_name,</if> <if test="className != null and className != ''">class_name,</if>
<if test="tplCategory != null and tplCategory != ''">tpl_category,</if> <if test="tplCategory != null and tplCategory != ''">tpl_category,</if>
<if test="packageName != null and packageName != ''">package_name,</if> <if test="packageName != null and packageName != ''">package_name,</if>
<if test="moduleName != null and moduleName != ''">module_name,</if> <if test="moduleName != null and moduleName != ''">module_name,</if>
<if test="businessName != null and businessName != ''">business_name,</if> <if test="businessName != null and businessName != ''">business_name,</if>
<if test="functionName != null and functionName != ''">function_name,</if> <if test="functionName != null and functionName != ''">function_name,</if>
<if test="functionAuthor != null and functionAuthor != ''">function_author,</if> <if test="functionAuthor != null and functionAuthor != ''">function_author,</if>
<if test="genType != null and genType != ''">gen_type,</if> <if test="genType != null and genType != ''">gen_type,</if>
<if test="genPath != null and genPath != ''">gen_path,</if> <if test="genPath != null and genPath != ''">gen_path,</if>
<if test="remark != null and remark != ''">remark,</if> <if test="remark != null and remark != ''">remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if> <if test="createBy != null and createBy != ''">create_by,</if>
create_time create_time
)values( )values(
<if test="tableName != null">#{tableName},</if> <if test="tableName != null">#{tableName},</if>
<if test="tableComment != null and tableComment != ''">#{tableComment},</if> <if test="tableComment != null and tableComment != ''">#{tableComment},</if>
<if test="className != null and className != ''">#{className},</if> <if test="className != null and className != ''">#{className},</if>
<if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if> <if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if>
<if test="packageName != null and packageName != ''">#{packageName},</if> <if test="packageName != null and packageName != ''">#{packageName},</if>
<if test="moduleName != null and moduleName != ''">#{moduleName},</if> <if test="moduleName != null and moduleName != ''">#{moduleName},</if>
<if test="businessName != null and businessName != ''">#{businessName},</if> <if test="businessName != null and businessName != ''">#{businessName},</if>
<if test="functionName != null and functionName != ''">#{functionName},</if> <if test="functionName != null and functionName != ''">#{functionName},</if>
<if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if> <if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if>
<if test="genType != null and genType != ''">#{genType},</if> <if test="genType != null and genType != ''">#{genType},</if>
<if test="genPath != null and genPath != ''">#{genPath},</if> <if test="genPath != null and genPath != ''">#{genPath},</if>
<if test="remark != null and remark != ''">#{remark},</if> <if test="remark != null and remark != ''">#{remark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if> <if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate() sysdate()
) )
</insert> </insert>
<update id="updateGenTable" parameterType="GenTable"> <update id="createTable">
update gen_table ${sql}
<set> </update>
<if test="tableName != null">table_name = #{tableName},</if>
<if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if> <update id="updateGenTable" parameterType="GenTable">
<if test="subTableName != null">sub_table_name = #{subTableName},</if> update gen_table
<if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if> <set>
<if test="className != null and className != ''">class_name = #{className},</if> <if test="tableName != null">table_name = #{tableName},</if>
<if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if> <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if>
<if test="genType != null and genType != ''">gen_type = #{genType},</if> <if test="subTableName != null">sub_table_name = #{subTableName},</if>
<if test="genPath != null and genPath != ''">gen_path = #{genPath},</if> <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if>
<if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if> <if test="className != null and className != ''">class_name = #{className},</if>
<if test="packageName != null and packageName != ''">package_name = #{packageName},</if> <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if>
<if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if> <if test="genType != null and genType != ''">gen_type = #{genType},</if>
<if test="businessName != null and businessName != ''">business_name = #{businessName},</if> <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if>
<if test="functionName != null and functionName != ''">function_name = #{functionName},</if> <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if>
<if test="options != null and options != ''">options = #{options},</if> <if test="packageName != null and packageName != ''">package_name = #{packageName},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if>
<if test="remark != null">remark = #{remark},</if> <if test="businessName != null and businessName != ''">business_name = #{businessName},</if>
update_time = sysdate() <if test="functionName != null and functionName != ''">function_name = #{functionName},</if>
</set> <if test="options != null and options != ''">options = #{options},</if>
where table_id = #{tableId} <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
</update> <if test="remark != null">remark = #{remark},</if>
update_time = sysdate()
<delete id="deleteGenTableByIds" parameterType="Long"> </set>
delete from gen_table where table_id in where table_id = #{tableId}
<foreach collection="array" item="tableId" open="(" separator="," close=")"> </update>
#{tableId}
</foreach> <delete id="deleteGenTableByIds" parameterType="Long">
</delete> delete from gen_table where table_id in
<foreach collection="array" item="tableId" open="(" separator="," close=")">
#{tableId}
</foreach>
</delete>
</mapper> </mapper>

View File

@ -1,209 +1,218 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head> <head>
<th:block th:include="include :: header('代码生成列表')" /> <th:block th:include="include :: header('代码生成列表')" />
</head> </head>
<body class="gray-bg"> <body class="gray-bg">
<div class="container-div"> <div class="container-div">
<div class="row"> <div class="row">
<div class="col-sm-12 search-collapse"> <div class="col-sm-12 search-collapse">
<form id="gen-form"> <form id="gen-form">
<div class="select-list"> <div class="select-list">
<ul> <ul>
<li> <li>
表名称:<input type="text" name="tableName"/> 表名称:<input type="text" name="tableName"/>
</li> </li>
<li> <li>
表描述:<input type="text" name="tableComment"/> 表描述:<input type="text" name="tableComment"/>
</li> </li>
<li class="select-time"> <li class="select-time">
<label>表时间: </label> <label>表时间: </label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>
<span>-</span> <span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/> <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>
</li> </li>
<li> <li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li> </li>
</ul> </ul>
</div> </div>
</form> </form>
</div> </div>
<div class="btn-group-sm" id="toolbar" role="group"> <div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success multiple disabled" onclick="javascript:batchGenCode()" shiro:hasPermission="tool:gen:code"> <a class="btn btn-success multiple disabled" onclick="javascript:batchGenCode()" shiro:hasPermission="tool:gen:code">
<i class="fa fa-download"></i> 生成 <i class="fa fa-download"></i> 生成
</a> </a>
<a class="btn btn-info" onclick="importTable()"> <a class="btn btn-success" onclick="createTable()">
<i class="fa fa-upload"></i> 导入 <i class="fa fa-plus"></i> 创建
</a> </a>
<a class="btn btn-primary single disabled" onclick="$.operate.editTab()" shiro:hasPermission="tool:gen:edit"> <a class="btn btn-info" onclick="importTable()">
<i class="fa fa-edit"></i> 修改 <i class="fa fa-upload"></i> 导入
</a> </a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="tool:gen:remove"> <a class="btn btn-primary single disabled" onclick="$.operate.editTab()" shiro:hasPermission="tool:gen:edit">
<i class="fa fa-remove"></i> 删除 <i class="fa fa-edit"></i> 修改
</a> </a>
</div> <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="tool:gen:remove">
<i class="fa fa-remove"></i> 删除
<div class="col-sm-12 select-table table-striped"> </a>
<table id="bootstrap-table"></table> </div>
</div>
</div> <div class="col-sm-12 select-table table-striped">
</div> <table id="bootstrap-table"></table>
<th:block th:include="include :: footer" /> </div>
<th:block th:include="include :: bootstrap-table-export-js" /> </div>
<script th:src="@{/ajax/libs/highlight/highlight.min.js}"></script> </div>
<script th:inline="javascript"> <th:block th:include="include :: footer" />
var prefix = ctx + "tool/gen"; <th:block th:include="include :: bootstrap-table-export-js" />
var editFlag = [[${@permission.hasPermi('tool:gen:edit')}]]; <script th:src="@{/ajax/libs/highlight/highlight.min.js}"></script>
var removeFlag = [[${@permission.hasPermi('tool:gen:remove')}]]; <script th:inline="javascript">
var previewFlag = [[${@permission.hasPermi('tool:gen:preview')}]]; var prefix = ctx + "tool/gen";
var codeFlag = [[${@permission.hasPermi('tool:gen:code')}]]; var editFlag = [[${@permission.hasPermi('tool:gen:edit')}]];
var removeFlag = [[${@permission.hasPermi('tool:gen:remove')}]];
$(function() { var previewFlag = [[${@permission.hasPermi('tool:gen:preview')}]];
var options = { var codeFlag = [[${@permission.hasPermi('tool:gen:code')}]];
url: prefix + "/list",
updateUrl: prefix + "/edit/{id}", $(function() {
removeUrl: prefix + "/remove", var options = {
sortName: "createTime", url: prefix + "/list",
sortOrder: "desc", updateUrl: prefix + "/edit/{id}",
showExport: true, removeUrl: prefix + "/remove",
modalName: "生成配置", sortName: "createTime",
rememberSelected: true, sortOrder: "desc",
uniqueId: "tableId", showExport: true,
columns: [{ modalName: "生成配置",
field: 'state', rememberSelected: true,
checkbox: true uniqueId: "tableId",
}, columns: [{
{ field: 'state',
field: 'tableId', checkbox: true
title: '编号', },
visible: false {
}, field: 'tableId',
{ title: '编号',
title: "序号", visible: false
formatter: function (value, row, index) { },
return $.table.serialNumber(index); {
} title: "序号",
}, formatter: function (value, row, index) {
{ return $.table.serialNumber(index);
field: 'tableName', }
title: '表名称', },
sortable: true, {
formatter: function(value, row, index) { field: 'tableName',
return $.table.tooltip(value); title: '表名称',
} sortable: true,
}, formatter: function(value, row, index) {
{ return $.table.tooltip(value);
field: 'tableComment', }
title: '表描述', },
sortable: true, {
formatter: function(value, row, index) { field: 'tableComment',
return $.table.tooltip(value, 15); title: '表描述',
} sortable: true,
}, formatter: function(value, row, index) {
{ return $.table.tooltip(value, 15);
field: 'className', }
title: '实体类名称', },
sortable: true {
}, field: 'className',
{ title: '实体类名称',
field: 'createTime', sortable: true
title: '创建时间', },
sortable: true {
}, field: 'createTime',
{ title: '创建时间',
field: 'updateTime', sortable: true
title: '更新时间', },
sortable: true {
}, field: 'updateTime',
{ title: '更新时间',
title: '操作', sortable: true
align: 'center', },
formatter: function(value, row, index) { {
var actions = []; title: '操作',
actions.push('<a class="btn btn-info btn-xs ' + previewFlag + '" href="javascript:void(0)" onclick="preview(\'' + row.tableId + '\')"><i class="fa fa-search"></i>预览</a> '); align: 'center',
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.tableId + '\')"><i class="fa fa-edit"></i>编辑</a> '); formatter: function(value, row, index) {
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.tableId + '\')"><i class="fa fa-remove"></i>删除</a> '); var actions = [];
actions.push('<a class="btn btn-warning btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="synchDb(\'' + row.tableName + '\')"><i class="fa fa-refresh"></i>同步</a> '); actions.push('<a class="btn btn-info btn-xs ' + previewFlag + '" href="javascript:void(0)" onclick="preview(\'' + row.tableId + '\')"><i class="fa fa-search"></i>预览</a> ');
actions.push('<a class="btn btn-primary btn-xs ' + codeFlag + '" href="javascript:void(0)" onclick="genCode(\'' + row.tableName + '\',\'' + row.genType + '\')"><i class="fa fa-bug"></i>生成代码</a> '); actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.tableId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
return actions.join(''); actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.tableId + '\')"><i class="fa fa-remove"></i>删除</a> ');
} actions.push('<a class="btn btn-warning btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="synchDb(\'' + row.tableName + '\')"><i class="fa fa-refresh"></i>同步</a> ');
}] actions.push('<a class="btn btn-primary btn-xs ' + codeFlag + '" href="javascript:void(0)" onclick="genCode(\'' + row.tableName + '\',\'' + row.genType + '\')"><i class="fa fa-bug"></i>生成代码</a> ');
}; return actions.join('');
$.table.init(options); }
}); }]
};
// 预览代码 $.table.init(options);
function preview(tableId) { });
var preViewUrl = prefix + "/preview/" + tableId;
$.modal.loading("正在加载数据,请稍后..."); // 预览代码
$.get(preViewUrl, function(result) { function preview(tableId) {
if (result.code == web_status.SUCCESS) { var preViewUrl = prefix + "/preview/" + tableId;
var items = []; $.modal.loading("正在加载数据,请稍后...");
$.each(result.data, function(index, value) { $.get(preViewUrl, function(result) {
var templateName = index.substring(index.lastIndexOf("/") + 1, index.length).replace(/\.vm/g, ""); if (result.code == web_status.SUCCESS) {
if(!$.common.equals("sql", templateName) && !$.common.equals("tree.html", templateName) && !$.common.equals("sub-domain.java", templateName)){ var items = [];
var language = templateName.substring(templateName.lastIndexOf(".") + 1); $.each(result.data, function(index, value) {
var highCode = hljs.highlight(language, value).value; var templateName = index.substring(index.lastIndexOf("/") + 1, index.length).replace(/\.vm/g, "");
items.push({ if(!$.common.equals("sql", templateName) && !$.common.equals("tree.html", templateName) && !$.common.equals("sub-domain.java", templateName)){
title: templateName , content: "<pre class=\"layui-code\"><code>" + highCode + "</code></pre>" var language = templateName.substring(templateName.lastIndexOf(".") + 1);
}) var highCode = hljs.highlight(language, value).value;
} items.push({
}); title: templateName , content: "<pre class=\"layui-code\"><code>" + highCode + "</code></pre>"
top.layer.tab({ })
area: ['90%', '90%'], }
shadeClose: true, });
success: function(layero, index){ top.layer.tab({
parent.loadCss(ctx + "ajax/libs/highlight/default.min.css"); area: ['90%', '90%'],
}, shadeClose: true,
tab: items success: function(layero, index){
}); parent.loadCss(ctx + "ajax/libs/highlight/default.min.css");
} else { },
$.modal.alertError(result.msg); tab: items
} });
$.modal.closeLoading(); } else {
}); $.modal.alertError(result.msg);
} }
$.modal.closeLoading();
// 生成代码 });
function genCode(tableName, genType) { }
$.modal.confirm("确定要生成" + tableName + "表代码吗?", function() {
if(genType === "0") { // 生成代码
location.href = prefix + "/download/" + tableName; function genCode(tableName, genType) {
layer.msg('执行成功,正在生成代码请稍后…', { icon: 1 }); $.modal.confirm("确定要生成" + tableName + "表代码吗?", function() {
} else if(genType === "1") { if(genType === "0") {
$.operate.get(prefix + "/genCode/" + tableName); location.href = prefix + "/download/" + tableName;
} layer.msg('执行成功,正在生成代码请稍后…', { icon: 1 });
}) } else if(genType === "1") {
} $.operate.get(prefix + "/genCode/" + tableName);
}
// 同步数据库 })
function synchDb(tableName){ }
$.modal.confirm("确认要强制同步" + tableName + "表结构吗?", function() {
$.operate.get(prefix + "/synchDb/" + tableName); // 同步数据库
}) function synchDb(tableName){
} $.modal.confirm("确认要强制同步" + tableName + "表结构吗?", function() {
$.operate.get(prefix + "/synchDb/" + tableName);
// 批量生成代码 })
function batchGenCode() { }
var rows = $.table.selectColumns("tableName");
if (rows.length == 0) { // 批量生成代码
$.modal.alertWarning("请选择要生成的数据"); function batchGenCode() {
return; var rows = $.table.selectColumns("tableName");
} if (rows.length == 0) {
$.modal.confirm("确认要生成选中的" + rows.length + "条数据吗?", function() { $.modal.alertWarning("请选择要生成的数据");
location.href = prefix + "/batchGenCode?tables=" + rows; return;
layer.msg('执行成功,正在生成代码请稍后…', { icon: 1 }); }
}); $.modal.confirm("确认要生成选中的" + rows.length + "条数据吗?", function() {
} location.href = prefix + "/batchGenCode?tables=" + rows;
layer.msg('执行成功,正在生成代码请稍后…', { icon: 1 });
// 导入表结构 });
function importTable() { }
var importTableUrl = prefix + "/importTable";
$.modal.open("导入表结构", importTableUrl); // 导入表结构
} function importTable() {
</script> var importTableUrl = prefix + "/importTable";
</body> $.modal.open("导入表结构", importTableUrl);
}
// 创建表结构
function createTable() {
var creatTableUrl = prefix + "/createTable";
$.modal.open("创建表结构", creatTableUrl);
}
</script>
</body>
</html> </html>

View File

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('创建表结构')"/>
</head>
<body>
<div class="main-content">
<label class="col-sm-6 control-label">创建表语句(支持多个建表语句)</label>
<div class="col-sm-11 col">
<textarea class="form-control" id="text_create" name="" placeholder="请输入文本" rows="12" type="text"></textarea>
</div>
</div>
<th:block th:include="include :: footer"/>
<script type="text/javascript">
var prefix = ctx + "tool/gen";
/* 创建表结构 */
function submitHandler() {
var rows = $("#text_create").val();
if (rows.length == 0) {
$.modal.alertWarning("请输入建表语句");
return;
}
var data = {"sql": rows};
$.operate.save(prefix + "/createTable", data);
}
</script>
</body>
</html>