From 65331d5326a907bb93c62be26faef74771819024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=8C=AF=E5=85=B4?= Date: Wed, 7 Nov 2018 10:01:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?gb2312=E7=BC=96=E7=A0=81=E8=BD=AC=E6=88=90?= =?UTF-8?q?=20utf-8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/generator.properties | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/application-power/src/main/resources/generator.properties b/application-power/src/main/resources/generator.properties index dd95f0c..38615bd 100644 --- a/application-power/src/main/resources/generator.properties +++ b/application-power/src/main/resources/generator.properties @@ -1,68 +1,68 @@ -#是否生成注释 +#鏄惁鐢熸垚娉ㄩ噴 generator.comment=true -#代码输出目录 +#浠g爜杈撳嚭鐩綍 generator.outDir=E:\\Test -#基包名 +#鍩哄寘鍚 generator.basePackage=com.test.springboot -#数据库表前缀,例如表t_user则需要去除前缀生成正确的实体 +#鏁版嵁搴撹〃鍓嶇紑,渚嬪琛╰_user鍒欓渶瑕佸幓闄ゅ墠缂鐢熸垚姝g‘鐨勫疄浣 generator.table.prefix=tb_ -#指定需要用哪张数据表生成代码,不指定则生成全部表的代码,指定表名后下面的过滤器将失效 +#鎸囧畾闇瑕佺敤鍝紶鏁版嵁琛ㄧ敓鎴愪唬鐮侊紝涓嶆寚瀹氬垯鐢熸垚鍏ㄩ儴琛ㄧ殑浠g爜,鎸囧畾琛ㄥ悕鍚庝笅闈㈢殑杩囨护鍣ㄥ皢澶辨晥 generator.table.name= # @since 1.6.3 -# 过滤数据库表,生成的时候只生成和过滤器匹配的表 +# 杩囨护鏁版嵁搴撹〃锛岀敓鎴愮殑鏃跺欏彧鐢熸垚鍜岃繃婊ゅ櫒鍖归厤鐨勮〃 generator.table.filter.prefix= -#生成项目的名称 +#鐢熸垚椤圭洰鐨勫悕绉 generator.applicationName=springboot-docker -#需要生成的代码层 -#可生成的代码层dao,model,service,controller,mapper,controllerTest,serviceTest +#闇瑕佺敓鎴愮殑浠g爜灞 +#鍙敓鎴愮殑浠g爜灞俤ao,model,service,controller,mapper,controllerTest,serviceTest generator.layers=dao,model,service,controller,mapper,controllerTest,serviceTest -#需要生成的方法,方法间用英文逗号隔开,写错将无法生成基础方法 -#可生成的方法包括add,update,delete,query,page,queryToListMap。 -# query方法查询单条数据,page生成分页,queryToListMap是查询结果以List>返回 +#闇瑕佺敓鎴愮殑鏂规硶锛屾柟娉曢棿鐢ㄨ嫳鏂囬楀彿闅斿紑锛屽啓閿欏皢鏃犳硶鐢熸垚鍩虹鏂规硶 +#鍙敓鎴愮殑鏂规硶鍖呮嫭add,update,delete,query,page,queryToListMap銆 +# query鏂规硶鏌ヨ鍗曟潯鏁版嵁锛宲age鐢熸垚鍒嗛〉,queryToListMap鏄煡璇㈢粨鏋滀互List>杩斿洖 generator.methods=add,update,delete,query,page -#mybatis自动转驼峰映射,默认开启 +#mybatis鑷姩杞┘宄版槧灏勶紝榛樿寮鍚 generator.mapUnderscoreToCamelCase=true -#是否开启mybatis缓存,只能填写true或者false +#鏄惁寮鍚痬ybatis缂撳瓨锛屽彧鑳藉~鍐檛rue鎴栬協alse generator.enableCache=true -#是否需要生成mybatis mapper配置文件的ResultMap -#默认不生成result +#鏄惁闇瑕佺敓鎴恗ybatis mapper閰嶇疆鏂囦欢鐨凴esultMap +#榛樿涓嶇敓鎴恟esult generator.resultMap=false # @since 1.5 -# 打包springboot时是否采用assembly -# 如果采用则将生成一系列的相关配置和一系列的部署脚本 +# 鎵撳寘springboot鏃舵槸鍚﹂噰鐢╝ssembly +# 濡傛灉閲囩敤鍒欏皢鐢熸垚涓绯诲垪鐨勭浉鍏抽厤缃拰涓绯诲垪鐨勯儴缃茶剼鏈 generator.package.assembly=true # @since 1.6.4 -# 指定springboot项目的日志文件,避免使用assembly打包后在window修改脚本的烦恼 -# 推荐根据自己的日志在自动生成前指定好,屏蔽在系统间修改脚本的发生字符不一致问题 +# 鎸囧畾springboot椤圭洰鐨勬棩蹇楁枃浠讹紝閬垮厤浣跨敤assembly鎵撳寘鍚庡湪window淇敼鑴氭湰鐨勭儲鎭 +# 鎺ㄨ崘鏍规嵁鑷繁鐨勬棩蹇楀湪鑷姩鐢熸垚鍓嶆寚瀹氬ソ锛屽睆钄藉湪绯荤粺闂翠慨鏀硅剼鏈殑鍙戠敓瀛楃涓嶄竴鑷撮棶棰 generator.application.logConfig=log4j2.xml # @since 1.7.1 -# 该值为true时会为springboot maven项目创建Dockerfile和相应的构建脚本 +# 璇ュ间负true鏃朵細涓簊pringboot maven椤圭洰鍒涘缓Dockerfile鍜岀浉搴旂殑鏋勫缓鑴氭湰 generator.docker=true # @since 1.6 -# 多数据源多个数据数据源用逗号隔开[就是给不同的数据源一个别名],不需要多数据源环境则空出来 -# 对于多数据源会集成分布式事务 +# 澶氭暟鎹簮澶氫釜鏁版嵁鏁版嵁婧愮敤閫楀彿闅斿紑[灏辨槸缁欎笉鍚岀殑鏁版嵁婧愪竴涓埆鍚峕锛屼笉闇瑕佸鏁版嵁婧愮幆澧冨垯绌哄嚭鏉 +# 瀵逛簬澶氭暟鎹簮浼氶泦鎴愬垎甯冨紡浜嬪姟 # uage:generator.multiple.datasource=oracle,mysql generator.multiple.datasource= # @since 1.6 -# jta-atomikos分布式事务支持 +# jta-atomikos鍒嗗竷寮忎簨鍔℃敮鎸 generator.jta=false # @since 1.7.2 @@ -76,4 +76,3 @@ generator.lombok=false - -- Gitee From 0b22616b1884fcc18f3382622237d81b12b0817f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=8C=AF=E5=85=B4?= Date: Wed, 7 Nov 2018 10:10:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=94=9F=E6=88=90=20update=20=E8=AF=AD?= =?UTF-8?q?=E5=8F=A5=EF=BC=8C=E4=B8=8D=E6=9B=B4=E6=96=B0=E4=B8=BB=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../generator/builder/MapperBuilder.java | 2 +- .../generator/database/MySqlProvider.java | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/application-power/src/main/java/com/power/generator/builder/MapperBuilder.java b/application-power/src/main/java/com/power/generator/builder/MapperBuilder.java index a131aff..a0d3a83 100644 --- a/application-power/src/main/java/com/power/generator/builder/MapperBuilder.java +++ b/application-power/src/main/java/com/power/generator/builder/MapperBuilder.java @@ -160,7 +160,7 @@ public class MapperBuilder implements IBuilder { for (Map.Entry entry : columnMap.entrySet()) { column = entry.getValue(); String camelKey = StringUtil.underlineToCamel(entry.getKey()); - if (!column.isAutoIncrement()) { + if (!column.isPrimaryKey()) { updateSql.append(" ").append(""); updateSql.append(entry.getKey()).append(" = #{"); updateSql.append(StringUtil.underlineToCamel(entry.getKey())).append("},\n"); diff --git a/application-power/src/main/java/com/power/generator/database/MySqlProvider.java b/application-power/src/main/java/com/power/generator/database/MySqlProvider.java index 3b95cd4..814c0dd 100644 --- a/application-power/src/main/java/com/power/generator/database/MySqlProvider.java +++ b/application-power/src/main/java/com/power/generator/database/MySqlProvider.java @@ -25,6 +25,7 @@ public class MySqlProvider implements DbProvider { */ @Override public Map getColumnsInfo(String tableName) { + String primaryKey = getPrimaryKeysInfo(tableName); Map colMap = new LinkedHashMap<>(); Connection connection = null; try { @@ -46,6 +47,9 @@ public class MySqlProvider implements DbProvider { if ("YES".equals(isAutoIncrement)) { column.setAutoIncrement(true); } + if(columnName.equals(primaryKey)) { + column.setPrimaryKey(true); + } colMap.put(columnName, column); } } catch (Exception e) { @@ -56,6 +60,42 @@ public class MySqlProvider implements DbProvider { return colMap; } + /** + * 鑾峰彇涓婚敭瀛楁 + * @param tName + * @return + */ + public String getPrimaryKeysInfo(String tName) { + String columnName = ""; + Connection conn = DbUtil.getConnection(); + ResultSet rs = null; + try { + DatabaseMetaData dbmd = conn.getMetaData(); + /** + * 鑾峰彇瀵圭粰瀹氳〃鐨勪富閿垪鐨勬弿杩 + * 鏂规硶鍘熷瀷:ResultSet getPrimaryKeys(String catalog,String schema,String table); + * catalog - 琛ㄦ墍鍦ㄧ殑绫诲埆鍚嶇О;""琛ㄧず鑾峰彇娌℃湁绫诲埆鐨勫垪,null琛ㄧず鑾峰彇鎵鏈夌被鍒殑鍒椼 + * schema - 琛ㄦ墍鍦ㄧ殑妯″紡鍚嶇О(oracle涓搴斾簬Tablespace);""琛ㄧず鑾峰彇娌℃湁妯″紡鐨勫垪,null鏍囪瘑鑾峰彇鎵鏈夋ā寮忕殑鍒; 鍙寘鍚崟瀛楃閫氶厤绗("_"),鎴栧瀛楃閫氶厤绗("%"); + * table - 琛ㄥ悕绉;鍙寘鍚崟瀛楃閫氶厤绗("_"),鎴栧瀛楃閫氶厤绗("%"); + */ + rs = dbmd.getPrimaryKeys(conn.getCatalog(), null, tName); + + while (rs.next()) { + String tableCat = rs.getString("TABLE_CAT"); //琛ㄧ被鍒(鍙负null) + String tableSchemaName = rs.getString("TABLE_SCHEM");//琛ㄦā寮忥紙鍙兘涓虹┖锛,鍦╫racle涓幏鍙栫殑鏄懡鍚嶇┖闂,鍏跺畠鏁版嵁搴撴湭鐭 + String tableName = rs.getString("TABLE_NAME"); //琛ㄥ悕 + columnName = rs.getString("COLUMN_NAME");//鍒楀悕 + short keySeq = rs.getShort("KEY_SEQ");//搴忓垪鍙(涓婚敭鍐呭1琛ㄧず绗竴鍒楃殑涓婚敭锛屽2浠h〃涓婚敭鍐呯殑绗簩鍒) + String pkName = rs.getString("PK_NAME"); //涓婚敭鍚嶇О + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DbUtil.close(conn); + } + return columnName; + } + @Override public List getTablesInfo(String tableName,String filter) { List tableList; -- Gitee