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}
#if>
${lib.operation2Sql(operation.name)}>
#if>
<#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}"#if>#if>>
${operation.cdata!}
${lib.operation2Sql(operation.name)}>
#if>
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
+
#if>
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!}
#if>
<#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}"#if>#if>>
${operation.cdata!}
${lib.operation2Sql(operation.name)}>
#if>
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
+
#if>