diff --git a/pom.xml b/pom.xml
index 02006cfa6bbc7b82881d68b669b4857a0d307959..40c5463001bd0a7a2dc1791afb4fa2adab35598a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,7 @@
1.11.3
10.2.0.4.0
7.4.1.jre8
+ 0.3.2
@@ -107,6 +108,13 @@
org.postgresql
postgresql
+
+
+
+ ru.yandex.clickhouse
+ clickhouse-jdbc
+ ${clickhouse.version}
+
diff --git a/src/main/java/com/ricky/common/constant/Constants.java b/src/main/java/com/ricky/common/constant/Constants.java
index 2897ca8d76249377458e8ce2451ba73454013d29..b6b6b18dde87f797080e08d31770299fce4fea0f 100644
--- a/src/main/java/com/ricky/common/constant/Constants.java
+++ b/src/main/java/com/ricky/common/constant/Constants.java
@@ -89,5 +89,7 @@ public class Constants
/** Oracle数据库连接类型-服务名 */
public static final String ORACLE_CONN_TYPE_SERVICE_NAME = "service_name";
-
+
+ /** 数据库类型-Clickhouse */
+ public static final String DATABASE_TYPE_CLICKHOUSE = "clickhouse";
}
diff --git a/src/main/java/com/ricky/common/constant/GenConstants.java b/src/main/java/com/ricky/common/constant/GenConstants.java
index 8db34410f4b533b6a5da736b7be816ba83cb7ecf..3d51de22316910d66e61e7a5df19908872c4e09a 100644
--- a/src/main/java/com/ricky/common/constant/GenConstants.java
+++ b/src/main/java/com/ricky/common/constant/GenConstants.java
@@ -32,17 +32,32 @@ public class GenConstants
public static final String PARENT_MENU_NAME = "parentMenuName";
/** 数据库字符串类型 */
- public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2" };
+ public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2",
+ // Clickhouse
+ "String", "FixedString", "UUID" };
/** 数据库文本类型 */
public static final String[] COLUMNTYPE_TEXT = { "tinytext", "text", "mediumtext", "longtext" };
/** 数据库时间类型 */
- public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" };
+ public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp",
+ // Clickhouse
+ "DateTime", "DateTime64", "Date"
+ };
/** 数据库数字类型 */
public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "int2",
- "int4", "int8", "number", "integer", "bigint", "float", "float", "double", "decimal" };
+ "int4", "int8", "number", "integer", "bigint", "float", "float", "double", "decimal",
+ // Clickhouse
+ "Int8", "Int16", "Int32", "Int64", "Int128", "Int256", "Float", "Float32", "Decimal", "Decimal32", "Decimal64", "Decimal128",
+ "UInt8", "UInt16", "UInt32", "UInt64", "UInt128", "UInt256",
+ "TINYINT", "BOOL", "BOOLEAN", "INT1", "SMALLINT", "INT2", "INT", "INT4", "INTEGER", "BIGINT"};
+
+ /** Clickhouse 浮點數字段 */
+ public static final String[] COLUMNTYPE_CLICKHOUSE_FLOAT = { "Float", "Float32" };
+
+ /** Clickhouse Decimal 相關字段 */
+ public static final String[] COLUMNTYPE_CLICKHOUSE_DEC = { "Decimal", "Decimal32", "Decimal64", "Decimal128" };
/** 页面不需要编辑字段 */
public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" };
diff --git a/src/main/java/com/ricky/common/utils/DataSourceComposeUtils.java b/src/main/java/com/ricky/common/utils/DataSourceComposeUtils.java
index f02df0963e9fbea479551dc374cc7403219bf7ca..21743a52ef2d683fe58cd29643e0372e7983f49a 100644
--- a/src/main/java/com/ricky/common/utils/DataSourceComposeUtils.java
+++ b/src/main/java/com/ricky/common/utils/DataSourceComposeUtils.java
@@ -18,6 +18,8 @@ public class DataSourceComposeUtils
private static String URL_TEMPLATE_SQLSERVER = "jdbc:sqlserver://{}:{};SelectMethod=cursor;DatabaseName={}";
/** PostgreSQL连接字符串模板 */
private static String URL_TEMPLATE_POSTGRESQL = "jdbc:postgresql://{}:{}/{}?currentSchema={}&ssl=false";
+ /** Clickhouse连接字符串模板 */
+ private static String URL_TEMPLATE_CLICKHOUSE = "jdbc:clickhouse://{}:{}/{}";
public static DruidDataSource composeDruidDataSource(SysDataSource dataSource) throws BusinessException
{
@@ -58,6 +60,11 @@ public class DataSourceComposeUtils
druidDataSource.setUrl(StringUtils.format(URL_TEMPLATE_POSTGRESQL, dataSource.getHost(),
dataSource.getPort(), dataSource.getName(), dataSource.getSchemaName()));
}
+ else if (StringUtils.equals(dataSource.getDbType(), Constants.DATABASE_TYPE_CLICKHOUSE))
+ {
+ druidDataSource.setUrl(StringUtils.format(URL_TEMPLATE_CLICKHOUSE, dataSource.getHost(),
+ dataSource.getPort(), dataSource.getName(), dataSource.getSchemaName()));
+ }
else
{
throw new BusinessException("数据库驱动类型无效");
diff --git a/src/main/java/com/ricky/project/domain/GenTable.java b/src/main/java/com/ricky/project/domain/GenTable.java
index c1e4125090f2a108fed93f4928427ce18cf8a424..74476ee96b5229558050d58317ead467699d861b 100644
--- a/src/main/java/com/ricky/project/domain/GenTable.java
+++ b/src/main/java/com/ricky/project/domain/GenTable.java
@@ -35,7 +35,7 @@ public class GenTable extends BaseEntity
/** 表描述 */
@NotBlank(message = "表描述不能为空")
- private String tableComment;
+ private String tableComment = "默认表描述";
/** 关联父表的表名 */
private String subTableName;
diff --git a/src/main/java/com/ricky/project/domain/GenTableColumn.java b/src/main/java/com/ricky/project/domain/GenTableColumn.java
index 9c1adf7cbf1e6a24e455e256ae76dbb393183682..75cb2540beebf6ad8b162740da7e96ba0f5cf432 100644
--- a/src/main/java/com/ricky/project/domain/GenTableColumn.java
+++ b/src/main/java/com/ricky/project/domain/GenTableColumn.java
@@ -24,7 +24,7 @@ public class GenTableColumn extends BaseEntity
private String columnName;
/** 列描述 */
- private String columnComment;
+ private String columnComment = "默认列描述";
/** 列类型 */
private String columnType;
diff --git a/src/main/java/com/ricky/project/service/GenTableServiceImpl.java b/src/main/java/com/ricky/project/service/GenTableServiceImpl.java
index 1a5509ee5921ea59748a89e8e61d2ca058ffeb9b..258305f080a613513abbfa3b8def334c455f52c5 100644
--- a/src/main/java/com/ricky/project/service/GenTableServiceImpl.java
+++ b/src/main/java/com/ricky/project/service/GenTableServiceImpl.java
@@ -221,6 +221,7 @@ public class GenTableServiceImpl implements IGenTableService
SysConfig config = configMapper.selectSysConfig();
String operName = "管理员";
SysDataSource dataSource = dataSourceMapper.selectSysDataSource(dataSourceId);
+ String dbType = dataSource.getDbType();
for (GenTable table : tableList)
{
try
@@ -234,7 +235,7 @@ public class GenTableServiceImpl implements IGenTableService
List dbTableColumns = selectDbTableColumnsByName(dataSource.getId(), tableName);
for (GenTableColumn column : dbTableColumns)
{
- GenUtils.initColumnField(column, table);
+ GenUtils.initColumnField(column, table, dbType);
genTableColumnMapper.insertGenTableColumn(column);
}
}
@@ -257,6 +258,7 @@ public class GenTableServiceImpl implements IGenTableService
Map dataMap = new LinkedHashMap<>();
// 查询表信息
GenTable table = genTableMapper.selectGenTableById(tableId);
+
// 查询数据源信息
SysDataSource dataSource = dataSourceMapper.selectSysDataSource(table.getDataSourceId());
// 设置主子表信息
@@ -271,7 +273,7 @@ public class GenTableServiceImpl implements IGenTableService
VelocityContext context = VelocityUtils.prepareContext(table);
// 获取模板列表
- List templates = VelocityUtils.getTemplateList(table.getTplCategory());
+ List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getDbType());
for (String template : templates)
{
// 渲染模板
@@ -323,7 +325,7 @@ public class GenTableServiceImpl implements IGenTableService
VelocityContext context = VelocityUtils.prepareContext(table);
// 获取模板列表
- List templates = VelocityUtils.getTemplateList(table.getTplCategory());
+ List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getDbType());
for (String template : templates)
{
if (!StringUtils.contains(template, "sql.vm"))
@@ -368,7 +370,7 @@ public class GenTableServiceImpl implements IGenTableService
dbTableColumns.forEach(column -> {
if (!tableColumnNames.contains(column.getColumnName()))
{
- GenUtils.initColumnField(column, table);
+ GenUtils.initColumnField(column, table, table.getDbType());
genTableColumnMapper.insertGenTableColumn(column);
}
});
@@ -428,7 +430,7 @@ public class GenTableServiceImpl implements IGenTableService
VelocityContext context = VelocityUtils.prepareContext(table);
// 获取模板列表
- List templates = VelocityUtils.getTemplateList(table.getTplCategory());
+ List templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getDbType());
for (String template : templates)
{
// 渲染模板
diff --git a/src/main/java/com/ricky/project/util/GenUtils.java b/src/main/java/com/ricky/project/util/GenUtils.java
index 380e41af42326b83c69e299282165e101ecabcee..d22ac80aa3b789c88d9913ad9d2d67b627b74658 100644
--- a/src/main/java/com/ricky/project/util/GenUtils.java
+++ b/src/main/java/com/ricky/project/util/GenUtils.java
@@ -2,6 +2,8 @@ package com.ricky.project.util;
import java.util.Arrays;
+import com.alibaba.fastjson.JSON;
+import com.ricky.common.constant.Constants;
import org.apache.commons.lang3.RegExUtils;
import com.ricky.common.constant.GenConstants;
@@ -12,7 +14,7 @@ import com.ricky.project.domain.SysConfig;
/**
* 代码生成器 工具类
- *
+ * TODO: Clickhouse 支持
* @author ruoyi
*/
public class GenUtils
@@ -34,9 +36,9 @@ public class GenUtils
/**
* 初始化列属性字段
*/
- public static void initColumnField(GenTableColumn column, GenTable table)
+ public static void initColumnField(GenTableColumn column, GenTable table, String dbType)
{
- String dataType = getDbType(column.getColumnType());
+ String dataType = getDbType(column.getColumnType(), dbType);
String columnName = column.getColumnName();
column.setTableId(table.getTableId());
column.setCreateBy(table.getCreateBy());
@@ -61,21 +63,53 @@ public class GenUtils
{
column.setHtmlType(GenConstants.HTML_INPUT);
- // 如果是浮点型 统一用BigDecimal
- String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
- if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0)
- {
- column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
- }
- // 如果是整形
- else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10)
- {
- column.setJavaType(GenConstants.TYPE_INTEGER);
- }
- // 长整形
- else
- {
- column.setJavaType(GenConstants.TYPE_LONG);
+ if (dbType.equals(Constants.DATABASE_TYPE_CLICKHOUSE)) {
+ if (arraysContains(GenConstants.COLUMNTYPE_CLICKHOUSE_FLOAT, dataType)) {
+ column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
+ }
+ else if (arraysContains(GenConstants.COLUMNTYPE_CLICKHOUSE_DEC, dataType))
+ {
+ String _colType = column.getColumnType();
+ if (StringUtils.contains(_colType, "Nullable(")) {
+ _colType = StringUtils.remove(StringUtils.remove(_colType, "Nullable("), ")");
+ }
+ String[] str = StringUtils.split(StringUtils.substringBetween(_colType, "(", ")"), ", ");
+ if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0)
+ {
+ column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
+ }
+ // 如果是整形
+ else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10)
+ {
+ column.setJavaType(GenConstants.TYPE_INTEGER);
+ }
+ // 长整形
+ else
+ {
+ column.setJavaType(GenConstants.TYPE_LONG);
+ }
+ }
+ else
+ {
+ column.setJavaType(GenConstants.TYPE_LONG);
+ }
+ } else {
+ // 如果是浮点型 统一用BigDecimal
+ String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
+ if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0)
+ {
+ column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
+ }
+ // 如果是整形
+ else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10)
+ {
+ column.setJavaType(GenConstants.TYPE_INTEGER);
+ }
+ // 长整形
+ else
+ {
+ column.setJavaType(GenConstants.TYPE_LONG);
+ }
}
}
@@ -216,15 +250,36 @@ public class GenUtils
* @param columnType 列类型
* @return 截取后的列类型
*/
- public static String getDbType(String columnType)
+ public static String getDbType(String columnType, String dbType)
{
- if (StringUtils.indexOf(columnType, "(") > 0)
+ // For other database use;
+ if (!StringUtils.equals(dbType, Constants.DATABASE_TYPE_CLICKHOUSE))
{
- return StringUtils.substringBefore(columnType, "(");
+ if (StringUtils.indexOf(columnType, "(") > 0)
+ {
+ return StringUtils.substringBefore(columnType, "(");
+ }
+ else
+ {
+ return columnType;
+ }
+ // Clickhouse use;
}
else
{
- return columnType;
+ if (StringUtils.contains(columnType, "Nullable("))
+ {
+ columnType = StringUtils.remove(StringUtils.remove(columnType, "Nullable("), ")");
+ }
+
+ if (StringUtils.indexOf(columnType, "(") > 0)
+ {
+ return StringUtils.substringBefore(columnType, "(");
+ }
+ else
+ {
+ return columnType;
+ }
}
}
diff --git a/src/main/java/com/ricky/project/util/VelocityUtils.java b/src/main/java/com/ricky/project/util/VelocityUtils.java
index 5f99ae72829b3f5d0c979a4fb35508f1254944c9..10a0e397e55d3d94ddfa7fd5a4f78c410666b1ed 100644
--- a/src/main/java/com/ricky/project/util/VelocityUtils.java
+++ b/src/main/java/com/ricky/project/util/VelocityUtils.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import com.ricky.common.constant.Constants;
import org.apache.velocity.VelocityContext;
import com.alibaba.fastjson.JSONObject;
@@ -123,7 +124,7 @@ public class VelocityUtils
*
* @return 模板列表
*/
- public static List getTemplateList(String tplCategory)
+ public static List getTemplateList(String tplCategory, String dbType)
{
List templates = new ArrayList();
templates.add("vm/java/domain.java.vm");
@@ -131,7 +132,11 @@ public class VelocityUtils
templates.add("vm/java/service.java.vm");
templates.add("vm/java/serviceImpl.java.vm");
templates.add("vm/java/controller.java.vm");
- templates.add("vm/xml/mapper.xml.vm");
+ if (dbType.equals(Constants.DATABASE_TYPE_CLICKHOUSE)) {
+ templates.add("vm/xml/clickhouse/mapper.xml.vm");
+ } else {
+ templates.add("vm/xml/other/mapper.xml.vm");
+ }
if (GenConstants.TPL_CRUD.equals(tplCategory))
{
templates.add("vm/html/list.html.vm");
diff --git a/src/main/resources/application-druid.yml b/src/main/resources/application-druid.yml
index 7ec4defcc4a955e9d3bb97e8dd4368d0514d90c3..803a37701595b01262d0b46d52e5902642455c43 100644
--- a/src/main/resources/application-druid.yml
+++ b/src/main/resources/application-druid.yml
@@ -10,5 +10,5 @@ spring:
# url: jdbc:sqlite:./sqlite/code-generator.db
# 开发时
url: jdbc:sqlite::resource:static/sqlite/code-generator.db
- username: root
- password: password
\ No newline at end of file
+ username:
+ password:
\ No newline at end of file
diff --git a/src/main/resources/mybatis/mapper/GenTableMapper.xml b/src/main/resources/mybatis/mapper/GenTableMapper.xml
index 8df24a5886bc527324c17c6de1aadf7493f46cdc..82fde4b5db47bd489c354939db49f739427c4b3c 100644
--- a/src/main/resources/mybatis/mapper/GenTableMapper.xml
+++ b/src/main/resources/mybatis/mapper/GenTableMapper.xml
@@ -182,6 +182,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -203,6 +206,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -224,6 +230,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -282,6 +291,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND lower(table_comment) like lower(concat('%', #{genTable.tableComment}, '%'))
+
+ select name as table_name, comment as table_comment, metadata_modification_time as update_time from system.tables
+ where database = (select database())
+ AND name NOT LIKE 'qrtz_%' AND name NOT LIKE 'gen_%'
+
+ AND lower(table_name) like lower(concat('%', #{genTable.tableName}, '%'))
+
+
@@ -327,6 +344,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{name}
+
+ select table_name from information_schema.tables
+ where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database())
+ and table_name in
+
+ #{name}
+
+
@@ -398,5 +423,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where D.NAME = #{tableName}
ORDER BY A.COLORDER
+
+ select column_name, (case when (is_nullable = 0) then '1' else null end) as is_required, ordinal_position as sort, column_comment, column_type, (case when (b.primary_key = column_name) then 1 else 0 end) as is_pk
+ from information_schema.columns as a
+ left join (select primary_key, name from system.tables as b) b on b.name = a.table_name and b.primary_key = a.column_name
+ where table_schema = (select database()) and table_name = (#{tableName})
+ order by ordinal_position
+
\ No newline at end of file
diff --git a/src/main/resources/static/sqlite/code-generator.db b/src/main/resources/static/sqlite/code-generator.db
index 8217142dfddee6f30f7cfbc001a64b6feec4fad4..6dace9b1333573a563a861529b89733bfafe3360 100644
Binary files a/src/main/resources/static/sqlite/code-generator.db and b/src/main/resources/static/sqlite/code-generator.db differ
diff --git a/src/main/resources/vm/xml/clickhouse/mapper.xml.vm b/src/main/resources/vm/xml/clickhouse/mapper.xml.vm
new file mode 100644
index 0000000000000000000000000000000000000000..68dd35ec464c7963eca835d506f4cee66252d212
--- /dev/null
+++ b/src/main/resources/vm/xml/clickhouse/mapper.xml.vm
@@ -0,0 +1,147 @@
+
+
+
+
+
+#foreach ($column in $columns)
+
+#end
+#if($table.tree)
+
+#end
+
+#if($table.sub)
+
+
+
+
+
+
+#foreach ($column in $subTable.columns)
+
+#end
+
+#end
+
+
+ select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
+
+
+
+
+
+
+
+ insert into ${tableName}
+
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
+ $column.columnName,
+#end
+#end
+
+
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
+ #{$column.javaField},
+#end
+#end
+
+
+
+
+ alter table ${tableName}
+
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName)
+ $column.columnName = #{$column.javaField},
+#end
+#end
+
+ where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+
+
+
+ alter table ${tableName} delete where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+
+
+
+ alter table ${tableName} delete where ${pkColumn.columnName} in
+
+ #{${pkColumn.javaField}}
+
+
+#if($table.sub)
+
+
+ alter table ${subTableName} delete where ${subTableFkName} in
+
+ #{${subTableFkclassName}}
+
+
+
+
+ alter table ${subTableName} delete where ${subTableFkName} = #{${subTableFkclassName}}
+
+
+
+ insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($velocityCount != $subTable.columns.size()),#end#end) values
+
+ (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($velocityCount != $subTable.columns.size()),#end#end)
+
+
+#end
+
+
\ No newline at end of file
diff --git a/src/main/resources/vm/xml/mapper.xml.vm b/src/main/resources/vm/xml/other/mapper.xml.vm
similarity index 98%
rename from src/main/resources/vm/xml/mapper.xml.vm
rename to src/main/resources/vm/xml/other/mapper.xml.vm
index cd0d9e517dc0587133b2d47cec2157f1bed0f301..5a5ed3db6d4e65c4411aa7226ffe5c734129b16f 100644
--- a/src/main/resources/vm/xml/mapper.xml.vm
+++ b/src/main/resources/vm/xml/other/mapper.xml.vm
@@ -1,147 +1,147 @@
-
-
-
-
-
-#foreach ($column in $columns)
-
-#end
-#if($table.tree)
-
-#end
-
-#if($table.sub)
-
-
-
-
-
-
-#foreach ($column in $subTable.columns)
-
-#end
-
-#end
-
-
- select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
-
-
-
-
-
-
-
- insert into ${tableName}
-
-#foreach($column in $columns)
-#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
- $column.columnName,
-#end
-#end
-
-
-#foreach($column in $columns)
-#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
- #{$column.javaField},
-#end
-#end
-
-
-
-
- update ${tableName}
-
-#foreach($column in $columns)
-#if($column.columnName != $pkColumn.columnName)
- $column.columnName = #{$column.javaField},
-#end
-#end
-
- where ${pkColumn.columnName} = #{${pkColumn.javaField}}
-
-
-
- delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
-
-
-
- delete from ${tableName} where ${pkColumn.columnName} in
-
- #{${pkColumn.javaField}}
-
-
-#if($table.sub)
-
-
- delete from ${subTableName} where ${subTableFkName} in
-
- #{${subTableFkclassName}}
-
-
-
-
- delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
-
-
-
- insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($velocityCount != $subTable.columns.size()),#end#end) values
-
- (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($velocityCount != $subTable.columns.size()),#end#end)
-
-
-#end
-
+
+
+
+
+
+#foreach ($column in $columns)
+
+#end
+#if($table.tree)
+
+#end
+
+#if($table.sub)
+
+
+
+
+
+
+#foreach ($column in $subTable.columns)
+
+#end
+
+#end
+
+
+ select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
+
+
+
+
+
+
+
+ insert into ${tableName}
+
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
+ $column.columnName,
+#end
+#end
+
+
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
+ #{$column.javaField},
+#end
+#end
+
+
+
+
+ update ${tableName}
+
+#foreach($column in $columns)
+#if($column.columnName != $pkColumn.columnName)
+ $column.columnName = #{$column.javaField},
+#end
+#end
+
+ where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+
+
+
+ delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+
+
+
+ delete from ${tableName} where ${pkColumn.columnName} in
+
+ #{${pkColumn.javaField}}
+
+
+#if($table.sub)
+
+
+ delete from ${subTableName} where ${subTableFkName} in
+
+ #{${subTableFkclassName}}
+
+
+
+
+ delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
+
+
+
+ insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($velocityCount != $subTable.columns.size()),#end#end) values
+
+ (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($velocityCount != $subTable.columns.size()),#end#end)
+
+
+#end
+
\ No newline at end of file