From f693bcd1f5bdd8c106e61fcf95712d3af6806e16 Mon Sep 17 00:00:00 2001 From: zihansyu Date: Tue, 10 May 2022 16:38:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0clickhouse=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 + .../com/ricky/common/constant/Constants.java | 4 +- .../ricky/common/constant/GenConstants.java | 21 +- .../common/utils/DataSourceComposeUtils.java | 7 + .../com/ricky/project/domain/GenTable.java | 2 +- .../ricky/project/domain/GenTableColumn.java | 2 +- .../project/service/GenTableServiceImpl.java | 12 +- .../java/com/ricky/project/util/GenUtils.java | 99 ++++-- .../com/ricky/project/util/VelocityUtils.java | 9 +- src/main/resources/application-druid.yml | 4 +- .../mybatis/mapper/GenTableMapper.xml | 32 ++ .../resources/static/sqlite/code-generator.db | Bin 30720 -> 30720 bytes .../resources/vm/xml/clickhouse/mapper.xml.vm | 147 +++++++++ .../vm/xml/{ => other}/mapper.xml.vm | 292 +++++++++--------- 14 files changed, 456 insertions(+), 183 deletions(-) create mode 100644 src/main/resources/vm/xml/clickhouse/mapper.xml.vm rename src/main/resources/vm/xml/{ => other}/mapper.xml.vm (98%) diff --git a/pom.xml b/pom.xml index 02006cf..40c5463 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 2897ca8..b6b6b18 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 8db3441..3d51de2 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 f02df09..21743a5 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 c1e4125..74476ee 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 9c1adf7..75cb254 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 1a5509e..258305f 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 380e41a..d22ac80 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 5f99ae7..10a0e39 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 7ec4def..803a377 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 8df24a5..82fde4b 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 GIT binary patch delta 131 zcmZqpz}WDCae_4C>4`GVtfv|Df)h5TsBkk%Z0_W)j^Sfv5@lds#B9s-f~lTKbYmkk zlUjxZKLewpqB4UtKR>TAudyP#b53S*c1C__acVN0H90O@dGhfr0YMWhBXcW51B9B% V^;uIU^Lw&Q-kZg>SvmVI4* + + + + +#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 cd0d9e5..5a5ed3d 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 -- Gitee