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 a131affb55fc76ad5f4c26700c1ebb85b7e82725..a0d3a8394096efbf120fb938eca287771f5c3b2c 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 3b95cd49c9c4004a4d6e4ca2e120f1ae8b303504..814c0dd817f577b2087eb5e7f3dd19ec9da77504 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");//表模式(可能为空),在oracle中获取的是命名空间,其它数据库未知 + String tableName = rs.getString("TABLE_NAME"); //表名 + columnName = rs.getString("COLUMN_NAME");//列名 + short keySeq = rs.getShort("KEY_SEQ");//序列号(主键内值1表示第一列的主键,值2代表主键内的第二列) + 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; diff --git a/application-power/src/main/resources/generator.properties b/application-power/src/main/resources/generator.properties index dd95f0c74ab0acc49b5265f82fb9720534138392..38615bdd9f998fef71ec217d048d8fc75f64d767 100644 --- a/application-power/src/main/resources/generator.properties +++ b/application-power/src/main/resources/generator.properties @@ -1,68 +1,68 @@ -#Ƿע +#是否生成注释 generator.comment=true -#Ŀ¼ +#代码输出目录 generator.outDir=E:\\Test -# +#基包名 generator.basePackage=com.test.springboot -#ݿǰ׺,t_userҪȥǰ׺ȷʵ +#数据库表前缀,例如表t_user则需要去除前缀生成正确的实体 generator.table.prefix=tb_ -#ָҪݱɴ룬ָȫĴ,ָĹʧЧ +#指定需要用哪张数据表生成代码,不指定则生成全部表的代码,指定表名后下面的过滤器将失效 generator.table.name= # @since 1.6.3 -# ݿɵʱֻɺ͹ƥı +# 过滤数据库表,生成的时候只生成和过滤器匹配的表 generator.table.filter.prefix= -#Ŀ +#生成项目的名称 generator.applicationName=springboot-docker -#ҪɵĴ -#ɵĴdao,model,service,controller,mapper,controllerTest,serviceTest +#需要生成的代码层 +#可生成的代码层dao,model,service,controller,mapper,controllerTest,serviceTest generator.layers=dao,model,service,controller,mapper,controllerTest,serviceTest -#ҪɵķӢĶŸд޷ɻ -#ɵķadd,update,delete,query,page,queryToListMap -# queryѯݣpageɷҳ,queryToListMapDzѯList> +#需要生成的方法,方法间用英文逗号隔开,写错将无法生成基础方法 +#可生成的方法包括add,update,delete,query,page,queryToListMap。 +# query方法查询单条数据,page生成分页,queryToListMap是查询结果以List>返回 generator.methods=add,update,delete,query,page -#mybatisԶתշӳ䣬ĬϿ +#mybatis自动转驼峰映射,默认开启 generator.mapUnderscoreToCamelCase=true -#Ƿmybatis棬ֻдtruefalse +#是否开启mybatis缓存,只能填写true或者false generator.enableCache=true -#ǷҪmybatis mapperļResultMap -#Ĭϲresult +#是否需要生成mybatis mapper配置文件的ResultMap +#默认不生成result generator.resultMap=false # @since 1.5 -# springbootʱǷassembly -# һϵеúһϵеIJű +# 打包springboot时是否采用assembly +# 如果采用则将生成一系列的相关配置和一系列的部署脚本 generator.package.assembly=true # @since 1.6.4 -# ָspringbootĿ־ļʹassemblywindow޸Ľűķ -# ƼԼ־Զǰָãϵͳ޸Ľűķַһ +# 指定springboot项目的日志文件,避免使用assembly打包后在window修改脚本的烦恼 +# 推荐根据自己的日志在自动生成前指定好,屏蔽在系统间修改脚本的发生字符不一致问题 generator.application.logConfig=log4j2.xml # @since 1.7.1 -# ֵΪtrueʱΪspringboot mavenĿDockerfileӦĹű +# 该值为true时会为springboot 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 -