mybatis+mysql动态字段添删改小结

转: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会提示找不到对应的属性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值