<insert id
="saveJudgePersonInfoForManage" parameterType
="java.util.HashMap" >
<selectKey keyProperty
="person_id" resultType
="String" order
="BEFORE">
select
sys_guid() from dual
</selectKey
>
insert into ij_judgement_person
(person_id,
person_idcard
, person_name
, person_phone
, person_email
, person_address
, item_num
,
register_people_name
, register_people_id
, register_org_name
, register_org_id
, create_time
, update_time
)
values
(#
{person_id
},
#
{applicantIdCard
,jdbcType
=VARCHAR
},#
{personName
,jdbcType
=VARCHAR
},#
{person_phone
,jdbcType
=VARCHAR
}, #
{person_email
,jdbcType
=VARCHAR
}, #
{person_address
,jdbcType
=VARCHAR
}, #
{item_num
},
#
{register_people_name
,jdbcType
=VARCHAR
}, #
{register_people_id
,jdbcType
=VARCHAR
}, #
{register_org_name
,jdbcType
=VARCHAR
}, #
{register_org_id
,jdbcType
=VARCHAR
}, #
{create_time
,jdbcType
=VARCHAR
}, '')
</insert
>
int count1
= mobileIjDao
.saveJudgePersonInfoForManage(paramMap
);
if(count1
>0){
if(itemList
!=null
&& itemList
.size()>0){
for (int i
= 0; i
<itemList
.size() ; i
++) {
Map
<String,Object> itemMap
= itemList
.get(i
);
itemMap
.put("RECEIPT_STATUS","0");
itemMap
.put("PERSON_ID",paramMap
.get("person_id"));
}
}
int count2
= mobileIjDao
.saveJudgeResultForManage(itemList
);
if(count2
>0){
return paramMap
;
}
}
属性描述
keyPropertyselectKey 语句结果应该被设置的目标属性。resultType结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。order这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。statementType和前面的相 同,MyBatis 支持 STATEMENT ,PREPARED 和CALLABLE 语句的映射类型,分别代表 PreparedStatement 和CallableStatement 类型。
SelectKey需要注意order属性,像Mysql一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值。 上面的方法在dao层调用saveJudgePersonInfoForManage方法后 会将ij_judgement_person表的主键赋值到person_id这个字段中,在paramMap中可以获取到新增的这条记录的id