`

Mybatis使用Oracle批量添加、更新数据的说明

 
阅读更多
最近我使用Mybatis插入更新数据遇到了小麻烦,在网上搜索了一大批,感觉不是很如意,最后经过高人指点,弄了出来了,具体请看如下代码
实体:
public class Author implements Serializable {
	private String author_id;
	
	private String userName;
	
	private String password;
	
	private String email;
	
	private String bio;


mapper.xml文件如下:
<update id="updateAuthorBatch" parameterType="com.deppon.cms.mybatis.domain.Author">
	begin
		<foreach collection="list" item="item" index="index"  separator=";">
		update t_zxw_author 
		<set>
			<if test="item.userName != null">
				username=#{userName,jdbcType=VARCHAR},
			</if>
			<if test="item.password != null">
				password = #{password,jdbcType=VARCHAR}
			</if>
		</set>
		where author_id in 
		#{item.author_id,jdbcType=VARCHAR}
		</foreach>
		;end;
		
	</update>

这个是弄死的,有多少数据,就有多少update语句,不知道还有什么好点的方法, 我至少现在没有找到

插入数据这样写:
<!-- 插入的时候insert或者select都行的,不解啊 -->
	<insert id="batchInsert" parameterType="java.util.List">
<!-- 		<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="author_id">  -->
<!--        		SELECT SYS_GUID() FROM DUAL -->
<!-- 		</selectKey> -->
		insert into t_zxw_author(author_id,username,password,email,bio)
		<foreach collection="list" item="item" index="index" separator="union all">
			select SYS_GUID(),#{item.userName,jdbcType=VARCHAR},#{item.password,jdbcType=VARCHAR},#{item.email,jdbcType=VARCHAR},#{item.bio,jdbcType=VARCHAR} from dual
		</foreach>


当弄完这些之后,测试代码如下
	@Test
	public void testAddAuthorBatch(){
		List<Author> list = new ArrayList<Author>();
		Author author = null;
		for(int i=0;i<100;i++){
			author = new Author();
			author.setBio("gaga");
			author.setEmail("ggg");
			author.setPassword("gggg");
			author.setUserName("uyyyyy");
			list.add(author);
		}
		
		authorDao.addAuthorBatch(list);
	}
	
	@Test
	public void testUpdateAuthorBatch(){
		List<Author> list = new ArrayList<Author>();
		Author author = new Author();
		Author author1 = new Author();
		author.setUserName("潘仔");
		author.setPassword("gggg");
		author.setAuthor_id("DDC5B92630ADF245E040A8C091111E6B");
		author1.setAuthor_id("DDE78A0195BAC662E040A8C09111737F");
		author1.setUserName("hhh");
		author.setPassword("kjasdjf");
		list.add(author);
		list.add(author1);
		
		authorDao.updateAuthorBatch(list);
	}

测试成功
分享到:
评论
1 楼 xyc717 2014-07-30  
到底对不对啊,我书读得少,你别骗我,那个update的我试了跟你写的一样都没出来,

<update id="updateHidden" parameterType="java.util.List" >
          begin 
        <foreach collection="list" item="SysParam" index="index"  separator=";"> 
        update sys_param  
<!--   set  hidden=#{SysParam.hidden},order=#{SysParam.order} ,param_update_date=sysdate()  -->
<set> 
            <if test="SysParam.hidden != null"> 
                hidden=#{SysParam.hidden}, 
            </if> 
            <if test="SysParam.order != null"> 
                order = #{SysParam.order} 
            </if> 
        </set> 
        where param_id =#{SysParam.param_id}
        </foreach> 
        ;end; 
</update>

相关推荐

    mybatis的oracle的批量插入优化和mybatis的generator自动生成三层文件

    总之,Oracle批量插入的优化和MyBatis Generator的使用是提升开发效率和数据库性能的重要手段。正确理解和运用这些技术,能够帮助我们在项目开发中事半功倍,为高质量的软件产品打下坚实的基础。

    mybatis批量添加实现1

    三、Oracle批量添加实现(`insertBatchForOracle`) Oracle数据库在处理批量插入时,与MySQL有所不同。Oracle通常使用子查询结合`UNION ALL`操作来实现批量插入。在Mybatis映射文件中,这样的配置是这样的: ```...

    Mybatis中使用updateBatch进行批量更新

    "Mybatis中使用updateBatch进行批量更新" Mybatis是一个基于Java的持久层框架,提供了批量更新的功能,以提高数据库操作的效率。在Mybatis中,可以使用updateBatch方法来进行批量更新,下面将详细介绍Mybatis中使用...

    Mybatis批量插入数据返回主键的实现

    在Mybatis中,批量插入数据可以通过使用foreach语句来实现,而返回主键可以通过使用useGeneratedKeys和keyProperty两个属性来实现。下面是一个示例代码: 首先,在持久层的Mapper文件中,我们需要定义一个批量插入...

    深入浅析mybatis oracle BLOB类型字段保存与读取

    本篇文章将深入剖析如何使用MyBatis框架在Oracle数据库中对BLOB类型字段进行保存和读取。 首先,BLOB字段设计用于存储非结构化的二进制大数据,如图像、音频文件或任何其他形式的字节流。相反,CLOB字段则适用于...

    java操作Oracle批量入库

    以上就是Java操作Oracle批量入库的基本步骤和注意事项。在实践中,还需要根据具体的应用场景和需求进行调整和优化。如果你想要查看更详细的代码示例和实践技巧,可以参考给出的博文链接:...

    mybatis 逆向工程自动生成工具

    - 数据类型:MySQL和Oracle数据库的数据类型存在差异,逆向工程需要处理这些差异,确保生成的Java实体类能够正确映射数据库中的字段。 - 表达式支持:SQL方言的差异也可能影响到生成的Mapper XML文件中的SQL语句,...

    mybatis plus 3.2.1破解版

    MyBatis Plus(简称iMybatis)是一款基于MyBatis框架的扩展插件,它旨在简化MyBatis的常规操作,提供更为便捷的 CRUD(创建、读取、更新、删除)功能,以及丰富的条件构造器,让数据库操作更加简单。在3.2.1这个版本...

    mybatis-plus学习项目笔记

    MyBatis-Plus是一个强大的MyBatis扩展框架,它简化了常见的CRUD操作,提供了诸如自动填充、条件构造器、批量插入等实用功能。在这个"mybatis-plus学习项目笔记"中,我们可以深入探讨MyBatis-Plus的核心特性,以及...

    mybatisGenerator代码自动生成

    在本文中,我们将深入探讨MyBatis Generator的功能、使用方法以及如何集成到项目中。 1. MyBatis Generator简介: MyBatis Generator是MyBatis框架的一个扩展,由MyBatis社区开发。它通过读取数据库元数据,自动...

    mybatis代码生成器

    6. **批量生成**:对于包含多个表的项目,MyBatis代码生成器可以一次性生成所有关联表的代码,节省大量时间。 7. **版本控制友好**:生成的代码易于纳入版本控制系统,方便团队协作,减少了因为手写代码导致的潜在...

    MyBatis3.2.6

    要使用 MyBatis,只需将 `mybatis-x.x.x.jar` 文件添加到项目的 classpath 中即可。如果项目使用 Maven 构建,则可在 `pom.xml` 文件中添加如下依赖: ```xml &lt;groupId&gt;org.mybatis &lt;artifactId&gt;mybatis ...

    如何批量测试Mybatis项目中的Sql是否正确详解

    在批量测试Mybatis项目中的SQL时,我们通常会面临以下问题:当数据库环境发生变化(例如,从Oracle切换到MySQL),由于不同数据库的SQL语法差异,原有的SQL语句可能需要调整。手动检查每个SQL语句显然不切实际,因此...

    mybatis-generator-core-1.3.2

    - 配置文件中的数据库表名可以使用通配符,如`*`,来批量生成多个表的代码。 - MBG生成的代码是基础版本,可能需要根据实际业务需求进行调整。 - 对于复杂的SQL逻辑,可能需要手动在Mapper XML文件中编写。 MyBatis...

    mybatis_plugin_2.91

    4. 批量操作:支持批量插入、更新和删除,提高数据处理性能。 5. 分页查询:内置分页插件,可以轻松实现复杂的分页查询。 6. 数据库兼容:对多种主流数据库如MySQL、Oracle、SQLite等有良好的兼容性。 总的来说,...

    mybatis动态插入list传入List参数的实例代码

    在 MyBatis 中,我们可以使用 `foreach` 语句来遍历 List 数据,然后将其插入到数据库中。下面是一个简单的示例: ```xml insert into prpcitemkind( RISKCODE, ITEMKINDNO, FAMILYNO, FAMILYNAME, ...

    导出EXCEL,分页及连接oracle的jar包

    在Java项目中,只需将ojdbc6.jar添加到项目的类路径中,就可以建立与Oracle数据库的连接,执行增删改查操作,从而实现数据的存储和检索。 综上所述,这三个jar包在Java开发中扮演着重要角色。Apache POI帮助开发者...

    mybatis生成工具1

    同时,通过动态代理机制,MyBatis可以在运行时自动生成SQL,参数设置,结果映射等操作,大大简化了数据访问层的开发。 "mybatis生成工具1"可能还具备以下特性: 1. 自定义模板:用户可以根据自己的项目需求定制生成...

    mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加问题

    这种做法在处理动态数据结构或者需要批量插入数据的场景中非常实用。然而,需要注意的是,这种动态SQL的方式可能会导致SQL注入的风险,因此在实际应用中需要确保输入数据的安全性。同时,由于每次插入都需要构建SQL...

Global site tag (gtag.js) - Google Analytics