转:https://blog.csdn.net/qqtt789632147/article/details/41206095
一、批量操作的数据源
Map的json形式
{
"id": "E4FCC73D0E0A452D9CB8FFA56E2F030C",
"tablename": "table11",
"fields": [
{
"value": "题名",
"key": "c1"
},
{
"value": "责任者",
"key": "c2"
},
{
"value": "F9818032F5B94F0B8EEDB38FE7550A02",
"key": "c7"
},
{
"value": "369DE622D22F4243B7A082E1F4719328",
"key": "c8"
}
]
}
fields是一个数量可变的Map集合
二、mybatis-temp.xml
1、添加
insert into ${tablename}
(
recordId
<if test="fields.size()>0">
,
<foreach collection="fields" index="index" item="item" open=""
separator=" , " close="">
${item.key}
</foreach>
</if>
)
values
(
#{id}
<if test="fields.size()>0">
,
<foreach collection="fields" index="index" item="item" open=""
separator=" , " close="">
#{item.value}
</foreach>
</if>
)
</insert>
2、修改
update ${tablename} set
<foreach collection="fields" index="index" item="item" open=""
separator=" , " close="">
${item.key} = #{item.value}
</foreach>
where
recordID = #{id}
</update>
3、删除
<update id="delete" parameterType="java.util.HashMap">
delete from ${tablename} where
recordID in
<foreach collection="fields" index="index" item="item" open="("
separator=" , " close=")">
#{item}
</foreach>
</update>
看数据的结构,再看看xml即可举一反三
4、插入之后获得返回值
在标签里添加,标签如下
<selectKey keyProperty="refdata" order="AFTER" resultType="java.lang.String">
SELECT creator from ${tablename} where recordId = #{id}
</selectKey>
keyProperty="refdata"指的是传入的参数对象的一个属性,如果是javabean则是其中的一个属性,如果是map则是其中的一个键值。javabean没试过,用map实验过程中发现,无论map键值对应的值类型如何,均以返回时候的类型为准,比如value是int,返回却是String,那么不会发生问题。但是javabean则很可能有问题,请注意之!
order="AFTER"这个便是在插入后执行之意。
resultType="java.lang.String"指的则是该返回值的类型,经多次实验该类型必填,否则会出现问题,mybatis会提示找不到对应的属性。