diff --git a/README.md b/README.md index cb8497f85ba241483246f51ae3c03fa12266f13f..5a59303e3d68b07f6ab84f6b45a515046a904a04 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,5 @@ [项目文档](http://git.oschina.net/bangis/mybatis.generator/wikis/pages)
- +
\ No newline at end of file diff --git a/README.old.md b/README.old.md deleted file mode 100644 index 61971605828a11ef1db7fdfdb665a04c2c84d510..0000000000000000000000000000000000000000 --- a/README.old.md +++ /dev/null @@ -1,660 +0,0 @@ -# mybatis.generator - -## 2017-09-01 更新 1.9.9.5-SNAPSHOT -1. kvmap 扩展 kvmap= (false|true|list|set) 返回结构为 Map Map Map - 其中 list set 方式为新增 -2. 增加对TDDL 参数支持 如 /*TDDL xxxx*/ -3. 分页支持增强: 增加 pagingCntType 类型 (paging|optimize|pagingExtCnt|pagingCustom) - * paging 默认类型,跟之前保持一致 - * optimize 增强 解决分页到最后时回表导致查询慢 sql提速方案详见下面例子 - ~~~sql - select - * - FROM - tabA - where aa = ? - limit 1000000,10 -- 如果tabA表中字段很长会导致后面查询很慢 - -- 改进后sql为 - select * from - ( - select - id - FROM - tabA - where aa = ? - limit 1000000,10 - - ) a - join - tabA t - on a.id=t.id - --- optimizePaging 标签内SQL 单独生成一个CountSQL - ~~~ - - * pagingExtCnt 对distinct支持 - - ~~~sql - select - DISTINCT name,code - FROM - tabA - where aa = ? - -- 此种分页会自动生成 将此SQL 括起来的求总数 sql - ~~~ - * pagingCustom 自定义分页Count operation (万能型) - -## 更新 - -1. 批量插入 - -~~~ - - - INSERT INTO RC_STRUCTURED_INTERVIEW_ABILITY_ITEM( - CODE - ,NAME - ,TYPE - ,STATUS - ,CREATOR - ,SYNONYM - ,MODIFIER - ,IS_DELETED - ,DESCRIPTION - ,GMT_CREATE - ,GMT_MODIFIED - )VALUES - - - ( - #{item.code,jdbcType=VARCHAR} - , #{item.name,jdbcType=VARCHAR} - , #{item.type,jdbcType=VARCHAR} - , #{item.status,jdbcType=VARCHAR} - , #{item.creator,jdbcType=VARCHAR} - , #{item.synonymStr,jdbcType=VARCHAR} - , #{item.modifier,jdbcType=VARCHAR} - , 'N' - , #{item.description,jdbcType=VARCHAR} - , now() - , now() - ) - - -~~~ - - -## 更新 2017-3-14 -版本升级为1.9.0-SNAPSHOT -1. 增加 DBPreCheckMapper,可以在通过在Checkpreload 调用可以在项目启动时检查表结构变更是否完成。 -2. 优化java类中import输出顺序问题导致mac与Windows下不一致问题 - - -## 更新 2016-11-05 -1. foreach 增加javatype支持,可以传入自定义java对象进行 in查询,增强原来只支持基本类型的List -2. operation 增加 kvmap="true" 支持 可以自动从返回List结果转为 Map 类型,注意不是将字段作为key而是将字段值作为Key - - -## 更新 2016-05-25 -1. 支持扩展条件 - -``` - - - - - - - -``` - -## 更新 2016-03-27 -1. 支持唯一约束自动生成SQL (表初始化时) -2. 支持软删除 - -## 更新 2016-03-23 (修复) -1. DAO参数排序 -2. DAO参数去重 - -## 更新 2015-12-20 -增加 ? 支持 但不会指定 jdbcType类型 -## 更新 2015-12-19 -增加 OB数据源支持 -## 目前支持 -1. 分页 -2. mysql,ob -3. 自定义ResultMap -4. ... - - -## 简介 -[mybatis.generator 源码](https://gitee.com/bangis/mybatis.generator) -1. 解决问题 - mybatis.generator 后续简称 dalgen,解决mybatis代码自动生成的缺失. -2. 对比其他代码生成工具 - * mybatis-generator-maven-plugin - 目前正在使用的代码生成工具,只能根据指定表结构反向生成do,mapper,mapper.xml且生成大量mybatis动态sql. - * dalgen - 除能根据指定表结构生成 do,mapper,mapper.xml外,还能根据自定义sql 自动生成对应mapper接口中的方法等 -## 能做什么 - -### 支持MySQL - -### 支持分表 -* 具体参考 config.xml - -### 初始化生成的方法有 -* insert,update,deleteByPrimary,getByPrimary四个简单地方法 - -### 其他自定义SQL -* 写在 operation中,执行 mvn mybatis:gen 后会自动帮您生成相关数据 - -### 基本动态sql支持 - -### 自定义参数: -* 指定 paramtype=primitive 会根据 sql中的 "#{...}" or ? 生成原生的参数. -* 指定 paramtype=object 参数为 DO 对象 -* 其他参数类型不再支持,支持多了容易给维护带来困难 -* 支持扩展条件,默认参数是根据sql中#{}或?产生,有时候会有额外用于判断的参数通过扩展生成出来 - -``` - - - - - - -``` -### 定义返回结果: -* 返回结果 可以指定 resultmap,resuttype -* resultmap 非变更类的 默认返回结果,不需要指定 -* reulttype 自定义返回类型,可以指定Map(需要写为全类) 原生类(String,Long等)大小写敏感 -* 自定义resultmap, 有时候返回类型比较特殊,那么可以自己定义resultmap, dalgen 会帮您生成对应的类 - -### 其他 -* 可以自由摸索 - -## 暂不能做什么 - -暂不支持Oracle,如有需要单独通知我,bangis.wangdf@alibaba-inc.com - -## 不会支持什么 -在 sql模板中不提供 mybatis特有的<sql>标签,避免复杂动态sql产生 - -## 如何使用 -pom中添加依赖 -```xml - - cn.dalgen.plugins - mybatis-maven-plugin - 1.0.2 - - - - src - dalgen/config/config.xml - - - - - dalgen/ext - - -``` -* 执行 mvn mybatis:gen 首先会初始化配置,减少了一步自己copy 配置文件的麻烦 - -``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -## table.xml 例子 -*首次执行输出DC_BG_RISK_SCAN 后DC_BG_RISK_SCAN.xml会自动生成,您仅需要添加自己的sql即可 -``` - - - - - - - - SELECT - LAST_INSERT_ID() - - INSERT INTO DC_BG_RISK_SCAN( - ID - ,NAME - ,RISK - ,DETAIL - ,EDU_INFO - ,ID_CARD_NO - ,DETAIL_URL - ,GMT_CREATE - ,GMT_MODIFIED - )VALUES( - #{id,jdbcType=BIGINT} - , #{name,jdbcType=VARCHAR} - , #{risk,jdbcType=CHAR} - , #{detail,jdbcType=VARCHAR} - , #{eduInfo,jdbcType=VARCHAR} - , #{idCardNo,jdbcType=VARCHAR} - , #{detailUrl,jdbcType=VARCHAR} - , #{gmtCreate,jdbcType=TIMESTAMP} - , #{gmtModified,jdbcType=TIMESTAMP} - ) - - - - UPDATE DC_BG_RISK_SCAN - SET - ID = #{id,jdbcType=BIGINT} - ,NAME = #{name,jdbcType=VARCHAR} - ,RISK = #{risk,jdbcType=CHAR} - ,DETAIL = #{detail,jdbcType=VARCHAR} - ,EDU_INFO = #{eduInfo,jdbcType=VARCHAR} - ,ID_CARD_NO = #{idCardNo,jdbcType=VARCHAR} - ,DETAIL_URL = #{detailUrl,jdbcType=VARCHAR} - ,GMT_CREATE = #{gmtCreate,jdbcType=TIMESTAMP} - ,GMT_MODIFIED = #{gmtModified,jdbcType=TIMESTAMP} - WHERE - ID = #{id,jdbcType=BIGINT} - - - - DELETE FROM - DC_BG_RISK_SCAN - WHERE - ID = #{id,jdbcType=BIGINT} - - - - SELECT * - FROM DC_BG_RISK_SCAN - WHERE - ID = #{id,jdbcType=BIGINT} - - - - - - - - - - - select - name,risk - from - DC_BG_RISK_SCAN - where - id_card_no=#{idCardNo} - or - id_card_no=#{idCardNoXX,jdbcType=VARCHAR} - limit 1 - - - - - select - name,risk - from - DC_BG_RISK_SCAN - where - id_card_no=#{idCardNo} - and - name in - - #{name,jdbcType=VARCHAR} - - limit 1 - - - - - select - name,risk - from - DC_BG_RISK_SCAN - where - id_card_no=#{idCardNo} - and - name in - - #{name,jdbcType=VARCHAR} - - -
-``` -## 生成结果 -RiskScanDOMapper.xml -```xml - - - - - - - - - - - - - - - - - - - - - - - ID,NAME,RISK,DETAIL,EDU_INFO,ID_CARD_NO,DETAIL_URL,GMT_CREATE,GMT_MODIFIED - - - - - - - SELECT - LAST_INSERT_ID() - - INSERT INTO DC_BG_RISK_SCAN( - ID - ,NAME - ,RISK - ,DETAIL - ,EDU_INFO - ,ID_CARD_NO - ,DETAIL_URL - ,GMT_CREATE - ,GMT_MODIFIED - )VALUES( - #{id,jdbcType=BIGINT} - , #{name,jdbcType=VARCHAR} - , #{risk,jdbcType=CHAR} - , #{detail,jdbcType=VARCHAR} - , #{eduInfo,jdbcType=VARCHAR} - , #{idCardNo,jdbcType=VARCHAR} - , #{detailUrl,jdbcType=VARCHAR} - , #{gmtCreate,jdbcType=TIMESTAMP} - , #{gmtModified,jdbcType=TIMESTAMP} - ) - - - - - UPDATE /*MS-AUTODALGEN-DC-BG-RISK-SCAN-UPDATE*/ DC_BG_RISK_SCAN - SET - ID = #{id,jdbcType=BIGINT} - ,NAME = #{name,jdbcType=VARCHAR} - ,RISK = #{risk,jdbcType=CHAR} - ,DETAIL = #{detail,jdbcType=VARCHAR} - ,EDU_INFO = #{eduInfo,jdbcType=VARCHAR} - ,ID_CARD_NO = #{idCardNo,jdbcType=VARCHAR} - ,DETAIL_URL = #{detailUrl,jdbcType=VARCHAR} - ,GMT_CREATE = #{gmtCreate,jdbcType=TIMESTAMP} - ,GMT_MODIFIED = #{gmtModified,jdbcType=TIMESTAMP} - WHERE - ID = #{id,jdbcType=BIGINT} - - - - - DELETE /*MS-AUTODALGEN-DC-BG-RISK-SCAN-DELETEBYPRIMARY*/ FROM - DC_BG_RISK_SCAN - WHERE - ID = #{id,jdbcType=BIGINT} - - - - - - - - - - - - - - -``` -```java -package com.alibaba.recruit.datacenter.risk.dal.mapper; - -import com.alibaba.recruit.datacenter.risk.dal.dataobject.RiskScanDO; -import com.alibaba.recruit.datacenter.risk.dal.resultmap.MyResult; -import java.util.List; - -/** - *The Table DC_BG_RISK_SCAN. - *风险扫描 - */ -public interface RiskScanDOMapper{ - - /** - *desc:插入表:DC_BG_RISK_SCAN.
- *descSql = SELECT LAST_INSERT_ID() INSERT INTO DC_BG_RISK_SCAN( ID ,NAME ,RISK ,DETAIL ,EDU_INFO ,ID_CARD_NO ,DETAIL_URL ,GMT_CREATE ,GMT_MODIFIED )VALUES( #{id,jdbcType=BIGINT} , #{name,jdbcType=VARCHAR} , #{risk,jdbcType=CHAR} , #{detail,jdbcType=VARCHAR} , #{eduInfo,jdbcType=VARCHAR} , #{idCardNo,jdbcType=VARCHAR} , #{detailUrl,jdbcType=VARCHAR} , #{gmtCreate,jdbcType=TIMESTAMP} , #{gmtModified,jdbcType=TIMESTAMP} ) - *@param RiskScanDO RiskScanDO - *@return Long - */ - Long insert(entity RiskScanDO); - /** - *desc:更新表:DC_BG_RISK_SCAN.
- *descSql = UPDATE DC_BG_RISK_SCAN SET ID = #{id,jdbcType=BIGINT} ,NAME = #{name,jdbcType=VARCHAR} ,RISK = #{risk,jdbcType=CHAR} ,DETAIL = #{detail,jdbcType=VARCHAR} ,EDU_INFO = #{eduInfo,jdbcType=VARCHAR} ,ID_CARD_NO = #{idCardNo,jdbcType=VARCHAR} ,DETAIL_URL = #{detailUrl,jdbcType=VARCHAR} ,GMT_CREATE = #{gmtCreate,jdbcType=TIMESTAMP} ,GMT_MODIFIED = #{gmtModified,jdbcType=TIMESTAMP} WHERE ID = #{id,jdbcType=BIGINT} - *@param RiskScanDO RiskScanDO - *@return Long - */ - Long update(entity RiskScanDO); - /** - *desc:根据主键删除数据:DC_BG_RISK_SCAN.
- *descSql = DELETE FROM DC_BG_RISK_SCAN WHERE ID = #{id,jdbcType=BIGINT} - *@param id id - *@return Long - */ - Long deleteByPrimary(Long id); - /** - *desc:根据主键获取数据:DC_BG_RISK_SCAN.
- *descSql = SELECT *FROM DC_BG_RISK_SCAN WHERE ID = #{id,jdbcType=BIGINT} - *@param id id - *@return RiskScanDO - */ - RiskScanDO getByPrimary(Long id); - /** - *desc:自定义ResultMap.
- *descSql = select name,risk from DC_BG_RISK_SCAN where id_card_no=#{idCardNo} or id_card_no=#{idCardNoXX,jdbcType=VARCHAR} limit 1 - *@param idCardNo idCardNo - *@param idCardNoXX idCardNoXX - *@return MyResult - */ - MyResult getMyResultMap(String idCardNo,String idCardNoXX); - /** - *desc:foreach支持.
- *descSql = select name,risk from DC_BG_RISK_SCAN where id_card_no=#{idCardNo} and name in #{name,jdbcType=VARCHAR} limit 1 - *@param idCardNo idCardNo - *@param names names - *@return MyResult - */ - MyResult getListParams(String idCardNo,List names); - /** - *desc:foreach支持 many.
- *descSql = select name,risk from DC_BG_RISK_SCAN where id_card_no=#{idCardNo} and name in #{name,jdbcType=VARCHAR} - *@param idCardNo idCardNo - *@param names names - *@return List - */ - List getListParamsMany(String idCardNo,List names); -} -``` -### 增加分页支持 -``` -multiplicity="paging" --标记为此方法需要走分页查询 -paging="QueryRisk" --分页查询参数类名称 - --自动生成DAO类,通过Spring 自动扫描方法注入,不提供xml配置项目生成了. - --DOMapper接口与DAO类区别在于对分页的支持 - - select - name,risk - from - DC_BG_RISK_SCAN - where - id_card_no=#{idCardNo} - and - name in - - #{name,jdbcType=VARCHAR} - - order by gmt_modified desc - - -Mapper.xml结果 - - - - - -DOMapper.java - /** - * desc:foreach支持 many.
- * descSql = select name,risk from DC_BG_RISK_SCAN where id_card_no=#{idCardNo} and name in #{name,jdbcType=VARCHAR} order by gmt_modified desc - * @param queryRisk queryRisk - * @return int - */ - int getListParamsPageCount(QueryRiskPage queryRisk); - /** - * desc:foreach支持 many.
- * descSql = select name,risk from DC_BG_RISK_SCAN where id_card_no=#{idCardNo} and name in #{name,jdbcType=VARCHAR} order by gmt_modified desc - * @param queryRisk queryRisk - * @return List - */ - List getListParamsPageResult(QueryRiskPage queryRisk); - -DAO.java - /** - * desc:foreach支持 many.
- * descSql = select name,risk from DC_BG_RISK_SCAN where id_card_no=#{idCardNo} and name in #{name,jdbcType=VARCHAR} order by gmt_modified desc - * @param queryRisk queryRisk - * @return QueryRiskPage - */ - public QueryRiskPage getListParamsPage(QueryRiskPage queryRisk){ - int total = riskScanDOMapper.getListParamsPageCount(queryRisk); - if(total>0){ - queryRisk.setDatas(riskScanDOMapper.getListParamsPageResult(queryRisk)); - } - queryRisk.setTotal(total); - return queryRisk; - } -如需分页会自动创建分页类 BasePage.java -``` diff --git a/dalgen/config/README.md b/dalgen/config/README.md index 6425615809d6ed1a53a9c45354327b86216fe1ea..7826111d2412f9e4ae2504876146882d474c3c29 100644 --- a/dalgen/config/README.md +++ b/dalgen/config/README.md @@ -1,3 +1,7 @@ > mybatis代码生成器,参考蚂蚁金服idalgen针对mybatis重新定义的一套代码生成器,idalgen在蚂蚁内部绝大多数应用都强制使用,优化版代码生成器除具有idalgen类似语法外,额外提供了常用的扩展功能 如List 自动转 Map,Map>等进一步减少体力开发 [项目文档](http://git.oschina.net/bangis/mybatis.generator/wikis/pages) + +
+ +
diff --git a/dalgen/config/table-config-1.0.dtd b/dalgen/config/table-config-1.0.dtd index ee190502349bdf8ea444cddd40e2fdd6e31d89a1..3591f224711d6ce0a4f5f4ca81f6737fa804cd9b 100644 --- a/dalgen/config/table-config-1.0.dtd +++ b/dalgen/config/table-config-1.0.dtd @@ -78,7 +78,7 @@ @@ -130,6 +130,8 @@ optimize pagingExtCnt 如 select distinct code,name from tb where xx=? 此类分页时使用 pagingCustom 配合 pagingCntOperation 自定义分页查询 + useGeneratedKeys 自增主键的库可以使用 如mysql 。 oracle无自增主键使用无效 + keyProperty paging 分页类-生成后即作为参数传递类又作为返回结果类 paramClass 生成后参数传递类 resulttype 指定返回类型 @@ -147,6 +149,8 @@ paramtype (object|primitive|objectList) #IMPLIED multiplicity (one|many|paging) #IMPLIED paging CDATA #IMPLIED + useGeneratedKeys (true|false) #IMPLIED + keyProperty CDATA #IMPLIED pagingCntType (paging|optimize|pagingExtCnt|pagingCustom) #IMPLIED pagingCntOperation CDATA #IMPLIED remark CDATA #IMPLIED diff --git a/dalgen/template/dalgen/XMLMapper.xml.ftl b/dalgen/template/dalgen/XMLMapper.xml.ftl index 4407f929b8fea47bacd55ae6aea752564a17009c..1ed0432bfa3f1e4b21d3a7541d3b3decca3b4075 100644 --- a/dalgen/template/dalgen/XMLMapper.xml.ftl +++ b/dalgen/template/dalgen/XMLMapper.xml.ftl @@ -66,14 +66,14 @@ ${operation.cdataPageCount!} <${lib.operation2Sql(operation.name)} id="${operation.name}Result" ${lib.mapperResult(operation)}${lib.timeout(operation)}> ${operation.cdata!} - <#if operation.pagingCntType.code=="paging"> + <#if operation.pagingCntType.code=="paging" || operation.pagingCntType.code=="pagingExtCnt"> limit ${"#"}{startRow},${"#"}{limit} <#else><#--非分页--> - <${lib.operation2Sql(operation.name)} id="${operation.name}" ${lib.mapperResult(operation)}${lib.timeout(operation)}> + <${lib.operation2Sql(operation.name)} id="${operation.name}" ${lib.mapperResult(operation)}${lib.timeout(operation)} <#if operation.useGeneratedKeys??>useGeneratedKeys="${operation.useGeneratedKeys}"<#if operation.keyProperty??> keyProperty="${operation.keyProperty}"> ${operation.cdata!} diff --git a/dalgen/template/init/initTableXml.ftl b/dalgen/template/init/initTableXml.ftl index b050ba5d381812e2e113b16daef1d7a6713964fe..9362acdceb3711a3f5cc68a00ed8a3be8ae1d0a6 100644 --- a/dalgen/template/init/initTableXml.ftl +++ b/dalgen/template/init/initTableXml.ftl @@ -21,6 +21,10 @@ SELECT LAST_INSERT_ID() + <#elseif dalgen.dbType=="Oracle"> + + select seq_${table.sqlName?lower_case}.nextval from dual + maven-plugin ${project.groupId}:${project.artifactId} - 1.1.8 + 1.2.0 https://gitee.com/bangis/mybatis.generator mybatis generator mapper.xml mapper.java dao.java do.java paging map list @@ -131,7 +131,6 @@ dom4j 1.6.1 - org.mockito mockito-all @@ -208,10 +207,10 @@ cn.dalgen.plugins mybatis-maven-plugin - 1.1.8 + 1.2.0 srcTmp - + dalgen/template diff --git a/src/main/java/cn/dalgen/mybatis/gen/model/config/CfOperation.java b/src/main/java/cn/dalgen/mybatis/gen/model/config/CfOperation.java index 9dcc8592895f482c27ec6b84d862c94d04409264..05e88d2678743990947fb5e3c407b915a3034e7b 100755 --- a/src/main/java/cn/dalgen/mybatis/gen/model/config/CfOperation.java +++ b/src/main/java/cn/dalgen/mybatis/gen/model/config/CfOperation.java @@ -18,70 +18,72 @@ public class CfOperation { /** * The Name. */ - private String name; + private String name; /** * Paging param name */ - private String paging; + private String paging; + private String useGeneratedKeys; + private String keyProperty; /** * Paging param name */ - private String pagingCntOperation; + private String pagingCntOperation; /** * The Param type. */ - private ParamTypeEnum paramType; + private ParamTypeEnum paramType; /** * The Multiplicity. */ - private MultiplicityEnum multiplicity; + private MultiplicityEnum multiplicity; - private PagingCntTypeEnum pagingCntType; + private PagingCntTypeEnum pagingCntType; /** * The Remark. */ - private String remark; + private String remark; /** * The Resulttype. */ - private String resulttype; + private String resulttype; /** * The Resultmap. */ - private String resultmap; + private String resultmap; /** * The Timeout. */ - private Long timeout; + private Long timeout; /** * The Cdata. */ - private String cdata; + private String cdata; /** * The Cdata page count. */ - private String cdataPageCount; + private String cdataPageCount; /** * The Sql desc. */ - private String sqlDesc; + private String sqlDesc; /** * The Primitive params. */ - private Map primitiveParams = Maps.newLinkedHashMap(); + private Map primitiveParams = Maps.newLinkedHashMap(); /** * The Primitive params. */ - private Map primitiveParamTestVals = Maps.newLinkedHashMap(); + private Map primitiveParamTestVals = Maps.newLinkedHashMap(); /** * The Primitive foreach params. */ - private Map primitiveForeachParams = Maps.newLinkedHashMap(); + private Map primitiveForeachParams = Maps.newLinkedHashMap(); /** * The Primitive foreach params. @@ -90,8 +92,8 @@ public class CfOperation { private String kvMap = "false"; - private String mapK; - private String mapV; + private String mapK; + private String mapV; /** * Gets name. @@ -281,7 +283,7 @@ public class CfOperation { /** * Add primitive paramTestVal. * - * @param attr the attr + * @param attr the attr * @param testVal the val */ public void addPrimitiveParamTestVal(String attr, String testVal) { @@ -327,7 +329,7 @@ public class CfOperation { * @param javaType the coll name */ public void addPrimitiveForeachOtherParam(String itemName, String collName, String javaType) { - this.primitiveForeachOtherParams.put(itemName, Lists.newArrayList(collName,javaType)); + this.primitiveForeachOtherParams.put(itemName, Lists.newArrayList(collName, javaType)); } /** @@ -371,7 +373,7 @@ public class CfOperation { } public void setKvMap(String kvMap) { - if(StringUtils.isNotBlank(kvMap)) { + if (StringUtils.isNotBlank(kvMap)) { this.kvMap = kvMap; } } @@ -407,4 +409,20 @@ public class CfOperation { public void setPagingCntType(PagingCntTypeEnum pagingCntType) { this.pagingCntType = pagingCntType; } + + public String getUseGeneratedKeys() { + return useGeneratedKeys; + } + + public void setUseGeneratedKeys(String useGeneratedKeys) { + this.useGeneratedKeys = useGeneratedKeys; + } + + public String getKeyProperty() { + return keyProperty; + } + + public void setKeyProperty(String keyProperty) { + this.keyProperty = keyProperty; + } } diff --git a/src/main/java/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.java b/src/main/java/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.java index b13d4a165e80739e6d9dda2175f039fc9e2310d0..815029fb5040d4370bca223c5da8e8e528eede4a 100755 --- a/src/main/java/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.java +++ b/src/main/java/cn/dalgen/mybatis/gen/model/repository/CfTableRepository.java @@ -182,6 +182,10 @@ public class CfTableRepository { cfOperation.setPagingCntType(PagingCntTypeEnum.getByCode(attr(operation, "pagingCntType"))); cfOperation.setPaging(attr(operation, "paging")); cfOperation.setPagingCntOperation(attr(operation, "pagingCntOperation")); + + cfOperation.setUseGeneratedKeys(attr(operation, "useGeneratedKeys")); + cfOperation.setKeyProperty(attr(operation, "keyProperty")); + if (cfOperation.getMultiplicity() == MultiplicityEnum.paging) { Validate.notEmpty(cfOperation.getPaging(), "需要设置paging,用来生成分页类"); } diff --git a/src/main/resources/dalgen/config/config.xml b/src/main/resources/dalgen/config/config.xml index 9f6582b28ad0d1008f460c035159fb7d66dd5a24..128f922fc439dd3a98afc487da586377e63f7463 100755 --- a/src/main/resources/dalgen/config/config.xml +++ b/src/main/resources/dalgen/config/config.xml @@ -86,5 +86,7 @@ + + diff --git a/src/main/resources/dalgen/config/table-config-1.0.dtd b/src/main/resources/dalgen/config/table-config-1.0.dtd index 49b011cc7da6298108c5b9bce8cbcb2e3ff9b13b..3591f224711d6ce0a4f5f4ca81f6737fa804cd9b 100755 --- a/src/main/resources/dalgen/config/table-config-1.0.dtd +++ b/src/main/resources/dalgen/config/table-config-1.0.dtd @@ -130,6 +130,8 @@ optimize pagingExtCnt 如 select distinct code,name from tb where xx=? 此类分页时使用 pagingCustom 配合 pagingCntOperation 自定义分页查询 + useGeneratedKeys 自增主键的库可以使用 如mysql 。 oracle无自增主键使用无效 + keyProperty paging 分页类-生成后即作为参数传递类又作为返回结果类 paramClass 生成后参数传递类 resulttype 指定返回类型 @@ -147,6 +149,8 @@ paramtype (object|primitive|objectList) #IMPLIED multiplicity (one|many|paging) #IMPLIED paging CDATA #IMPLIED + useGeneratedKeys (true|false) #IMPLIED + keyProperty CDATA #IMPLIED pagingCntType (paging|optimize|pagingExtCnt|pagingCustom) #IMPLIED pagingCntOperation CDATA #IMPLIED remark CDATA #IMPLIED diff --git a/src/main/resources/dalgen/configTables/CF_METADATA_ITEM.xml b/src/main/resources/dalgen/configTables/CF_METADATA_ITEM.xml index 966f20f6b8d4323d88118b7c825d0a532b970648..cf7fec20a46f9964a1c41868267d8fc0006c3b70 100644 --- a/src/main/resources/dalgen/configTables/CF_METADATA_ITEM.xml +++ b/src/main/resources/dalgen/configTables/CF_METADATA_ITEM.xml @@ -12,7 +12,7 @@ sf.ID,sf.METADATA,sf.SYS,sf.CODE,sf.NAME,sf.PATH,sf.TYPE,sf.PARENT - + SELECT LAST_INSERT_ID() diff --git a/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl b/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl index 753bbcf2fcbcdd47101555d23a6a0456016c7d31..1ed0432bfa3f1e4b21d3a7541d3b3decca3b4075 100755 --- a/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl +++ b/src/main/resources/dalgen/templates/dalgen/XMLMapper.xml.ftl @@ -73,7 +73,7 @@ ${operation.cdata!} <#else><#--非分页--> - <${lib.operation2Sql(operation.name)} id="${operation.name}" ${lib.mapperResult(operation)}${lib.timeout(operation)}> + <${lib.operation2Sql(operation.name)} id="${operation.name}" ${lib.mapperResult(operation)}${lib.timeout(operation)} <#if operation.useGeneratedKeys??>useGeneratedKeys="${operation.useGeneratedKeys}"<#if operation.keyProperty??> keyProperty="${operation.keyProperty}"> ${operation.cdata!} diff --git a/src/main/resources/dalgen/templates/init/initTableXml.ftl b/src/main/resources/dalgen/templates/init/initTableXml.ftl index b050ba5d381812e2e113b16daef1d7a6713964fe..9362acdceb3711a3f5cc68a00ed8a3be8ae1d0a6 100644 --- a/src/main/resources/dalgen/templates/init/initTableXml.ftl +++ b/src/main/resources/dalgen/templates/init/initTableXml.ftl @@ -21,6 +21,10 @@ SELECT LAST_INSERT_ID() + <#elseif dalgen.dbType=="Oracle"> + + select seq_${table.sqlName?lower_case}.nextval from dual +