Mybatis & Oracle

foreach踩过的坑:

    当集合为null或者集合的长度为0时,就会形成不符合语法的sql语句,执行出错。mybatis批量操作前得判断集合是否为空。

根据表名参数从不同的表里查询数据:

    表名sql拼接,不支持 # 预编译拼接,只能使用 $ 拼接sql。

向mybatis传递一个String类型的字符串(不使用@Param注解):

xml语句里面使用#{_parameter},认为_parameter是mybatis的一个关键字。

mybatis的if标签字符串判断:

<if test = 'attr== "value"'>        //外层单引号,内层双引号

<if test="sex=='Y'.toString()">    //外层双引号,内层单引号,需要使用toString()。

Oracle批量插入踩过的坑:

    如果插入一条数据:insert into tablename (col1,col2) values (v1,v2),没有问题。

    批量插入语句   insert into tablename (col1,col2)  values  (v11,v12),(v21,v22),却会报错,sqlserver、mysql能识别此语句。

Oracle批量插入的正确方式(同样是用于插入一条语句):

①:去掉 "values"关键字

②:使用dual表查询和union all关键字:

        insert  into tablename (col1,col2) select  v11,v12 from dual union all  v21,v22 from dual

Oracle递归查询:

    where用于 过滤 递归查询的结果,写在start with的前面。

concat函数:

    mysql可以支持两个和两个以上个数的参数,Oracle只支持两个参数,如果有多个拼接串,可以嵌套使用concat函数。

Mybatis&Oracle批量更新数据:

	<update id="updateDatas"  parameterType="java.util.List">
		<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
        update tableName
        set
        colName = #{item.property,jdbcType=VARCHAR} (最后一个别带逗号)
        where colName  = #{item.id,jdbcType=VARCHAR}
		</foreach>
	</update>

   返回结果并不是受影响的行数。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值