Mybatis 相关操作(想起来就记录一下~~)

  1. 字符串用逗号隔开转列
    如数据库某一字段存储值为: 01,02,03 查询转列显示
SELECT 
	substring_index(
		substring_index('01,02,03',',',help_topic_id+1),',',-1
	) as Id
FROM mysql.help_topic
WHERE help_topic_id < (length('01,02,03')-length(replace('01,02,03',',',''))+1)

结果
2. MYSQL批量插入操作:存在则更新,不存在插入(以主键为唯一值)

/**
	 * 
	 * @title insertBatch
	 * @Description 批量保存或更新
	 * @author chenlf
	 * @param erStatusList
	 */
	void insertBatch(List<EvalResultStatus> list);
<insert id="insertBatch" parameterType="java.util.List">
		INSERT INTO t_eval_result_status(
			id,
			raters_id,
			eval_manage_id,
			bs_id,
			type,
			status
		) VALUES
		<foreach collection="list" item="item" index="index" open="(" separator="),("  close=")">
			#{item.id},
			#{item.ratersId},
			#{item.evalManageId},
			#{item.bsId},
			#{item.type},
			#{item.status}
		</foreach>
			 ON DUPLICATE KEY UPDATE
             	status = values(status),<!-- 状态 -->
             	bs_id= values(bs_id)
	</insert>
  1. ORCLE批量插入操作:
<!-- 批量添加 -->
<insert id="insertGroupCompanyRelation" >
merge into T_BZH_TTLM_CY cy
using
(
    <foreach collection="companyIds" item="item" separator="union all"> <!-- 传入的集合参数 -->
         SELECT
            #{groupId, jdbcType=VARCHAR} AS GROUP_ID,
            #{item, jdbcType=VARCHAR} AS company_id
         FROM DUAL
</foreach>
) t
on (cy.GROUP_ID = t.GROUP_ID and cy.company_id = t.company_id) <!-- 关联主键-->
when matched then <!-- 如果存在就更新 -->
    update set <!-- 注意,这里不要写set id == xx -->
    fail.time = t1.time,
when not matched then <!-- 不存在就插入数据 -->
insert
(cy.GROUP_ID, cy.COMPANY_ID)
values
(t.GROUP_ID, t.COMPANY_ID)
</insert>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值