开发中mybatis的一些常见问题记录

一、oracle数据库通过mybatis的批量插入的两种方式

方式1

insert into table_tmp (id,v1,v2,v3,v4)
		SELECT A.*,OSM_VIID_DEVICE_UTSID.nextval FROM(
		<foreach item="item" index="index" collection="list" separator="union all">
             SELECT
          #{item.id},#{item.v1},#{item.v2},#{item.v3},#{item.v4}
     FROM DUAL </foreach> ) A

其中item为批量插入的list中的实体对象,id,v1,v2...是对象中的属性。如果允许空值的情况,不要忘记把格式写成这样#{item.v1,jdbcType=VARCAHR},

方式二

insert all 
         <foreach item="item" index="index" collection="list" separator="">
              into table_tmp  (id,v1,v2,v3)
             values
            (#{item.id},#{item.v1},#{item.v2},#{item.v3})
         </foreach>
         select 1 from dual

跟方式一一样,都需要注意空值的情况。

二、mybatis的if的字符串的等值判断写法

在检索的时候,经常会用到mybatis的if判断,有时候一个字段通过多个枚举,代表多种含义,例如字符串1,代表查询情况1,字符串2,代表情况2

如果写成这样:

<if test="option != '' and option== '1'"></if>

那上面判断不会成功,正确的写法应该是:

<if test="option != '' and option== '1'.toString()"></if>

猜你喜欢

转载自www.cnblogs.com/duck-ifox/p/9084317.html