mybatis批量操作Oracle数据

 

一、批量插入数据bean对象数据

实体类如下:

/**
	 * 标签ID(主键)
	 */
	private String tag_Id;
	/**
	 * 进出库时间
	 */
	private Date io_Time;
	/**
	 * 进出库状态(0:未授权  1:授权)
	 */
	private String status;

 

接口如下:

public int insertAllTreasuryInfo(List<IoTreasury> list);
mybatis.xml文件
<insert id="insertAllTreasuryInfo" parameterType="java.util.List">
		insert into t_io_treasury
		(tag_Id, io_Time, status)
		<foreach close=")" collection="list" item="item" index="index"
			open="(" separator="union">
			select
			#{item.tag_Id},#{item.io_Time},#{item.status}
			from dual
		</foreach>
	</insert> 
  1. 二、批量插入String字符类型
<insert id="insertAllTreasuryInfo" parameterType="java.util.List">
		insert into t_io_treasury
		(tag_Id)
		<foreach close=")" collection="list" item="item" index="index"
			open="(" separator="union">
			select
			#{item}
			from dual
		</foreach>
	</insert>

其中#{item}使用的是item而不是#{tag_Id}
   如果是bean对象就得使用item.tag_Id。
 

<insert id="insert" parameterType="com.b2b.cash.os.modules.entity.TbShopUpdatepriceErrorTemp">
  insert into tb_shop_updatePrice_error_temp (shop_commondity_id, name, unit, shop_id, shopSell_price)
  values
  <foreach collection="list" item="item" separator="," >
    (#{item.shopCommondityId,jdbcType=BIGINT}, #{item.name,jdbcType=VARCHAR},
    #{item.unit,jdbcType=VARCHAR}, #{item.shopId,jdbcType=BIGINT},
    #{item.shopsellPrice,jdbcType=DECIMAL})
  </foreach>
</insert>

接口:int insert(List<TbShopUpdatepriceErrorTemp> list);

注意:不能使用close=“)”和open“)”。

 

三、批量更新

批量更新(不含动态语言)

<update id="UpdateBatchTreasuryInfo" parameterType="java.util.List">  
        UPDATE t_io_treasury SET io_Time = sysdate WHERE tag_id IN  
        <foreach collection="list" index="index" item="idItem" open="("  
            separator="," close=")">  
            #{idItem.tag_Id}  
        </foreach>   

 </update>  

批量更新动态

<foreach collection="list" item="item" index="index" separator=";">
  update tb_commodity_price
  <set>
    <if test="item.commodityId != null">
      commodity_id = #{item.commodityId,jdbcType=INTEGER},
    </if>
    <if test="item.receivableStyle != null">
      receivable_style = #{item.receivableStyle,jdbcType=INTEGER},
    </if>
    <if test="item.receivablePrice != null">
      receivable_price = #{item.receivablePrice,jdbcType=DECIMAL},
    </if>
    <if test="item.isDelete != null">
      is_delete = #{item.isDelete,jdbcType=CHAR},
    </if>
  </set>
  <where>
    <if test="item.commodityId !=null">
      AND commodity_id = #{item.commodityId,jdbcType=INTEGER}
    </if>
    <if test="item.receivableStyle !=null">
      AND receivable_style = #{item.receivableStyle,jdbcType=INTEGER}
    </if>
  </where>
</foreach>

四、批量删除

 <delete id="deleteBatchTreasuryInfo" parameterType="java.util.List">  
        DELETE FROM t_io_treasury where tag_id in  
        <foreach collection="list" index="index" item="item" open="("    
            separator="," close=")">    
            #{item}    
        </foreach>    
    </delete>  

五、批量查询

<select id="selectBatchTreasuryInfo" parameterType="java.util.List"
resultType="IoTreasury">
select tag_id, io_time, status, authorized, auth_time, username from
t_io_treasury where tag_id in
<foreach collection="list" index="index" item="item" open="("
separator="," close=")">
#{item}
</foreach>
</select> 

查询详细介绍:http://fireinjava.iteye.com/blog/1779420

 

批量操作详细介绍:http://blog.csdn.net/hardworking0323/article/details/51105218

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值