`

mybatis-批量操作

阅读更多

代码如下:

 

1、获取sqlSession

/**
	 * 使用XML配置文件获取sqlsession
	 * @return
	 */
	public static SqlSession createSqlSessionByXML(){
		//获取config.xml文件
		String resource = "conf/config.xml";
		InputStream input = null;
		try {
			input = Resources.getResourceAsStream(resource);
			//获得sqlsession
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(input);
			session = factory.openSession();
			return session;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}

 

2、批量插入

 

/**
	 * 批量增加
	 */
	//@Test
	public void insertBatch(){
		
		List<User> users = new ArrayList<User>();
		for(int i=0;i <= 20;i++){
			User user = new User("姓名"+i, i%2, i+20);
			users.add(user);
		}
		
		//使用xml配置执行
		try{
			session = SessionUtil.createSqlSessionByXML();
			//使用mapper.xml文件执行
			User user = session.selectOne("org.mybatis.UserMapper.insertBatch",users);
		}finally{
			session.close();
		}
	}

//xml配置;

<!-- 批量插入数据 -->
	<insert id="insertBatch" >
       insert into user(name,sex,age) values
    	<foreach collection="list" item= "item" index ="index" separator=",">
	       (#{item.name}, #{item.sex},#{item.age})
    	</foreach >
 	</insert>

 

2、批量更新

 

/**
	 * 批量更新
	 */
	//@Test
	public void updateBatch(){
		
		Map<String,Object> map = new HashMap<String,Object>();
		List<Integer> idlist = new ArrayList<Integer>();
		for(int i=0;i<10;i++){
			idlist.add(i+45);
		}
		map.put("idlist", idlist);
		map.put("name", "姓名x");
		
		//使用xml配置执行
		try{
			session = SessionUtil.createSqlSessionByXML();
			//使用mapper.xml文件执行
			User user = session.selectOne("org.mybatis.UserMapper.updateBatch",map);
		}finally{
			session.close();
		}
	}

//xml 文件配置
<!-- 批量更新数据 -->
 	<update id= "updateBatch" parameterType= "map">
	    update user
	    set name = #{name} where id in
	    <foreach collection="idlist" item= "uid" index ="index"
	            open= "(" close =")" separator=",">
	            #{ uid}
	     </foreach >
    </update >

 

3、批量删除

 

/**
	 * 批量删除
	 */
	@Test
	public void deleteBatch(){
		
		List<Integer> idList = new ArrayList<Integer>();
		for(int i=0;i <= 5;i++){
			idList.add(i);
		}
		
		//使用xml配置执行
		try{
			session = SessionUtil.createSqlSessionByXML();
			//使用mapper.xml文件执行
			User user = session.selectOne("org.mybatis.UserMapper.deleteBatch",idList);
		}finally{
			session.close();
		}
	}

//xml文件配置
<!-- 批量删除 -->
    <delete id="deleteBatch" parameterType="java.util.List">  
	    DELETE FROM user WHERE id IN  
	    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">   
	        #{item}   
	    </foreach>  
	</delete>

 

 

操作过程成偶然报错误:

 

org.apache.ibatis.exceptions.PersistenceException: 

### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.mybatis.UserMapper.updateBatch

### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.mybatis.UserMapper.updateBatch

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)

 

 

该错误大意就是,*mapper.xml未找到或里面的sql中跟mapper接口中的方法不对应。我因为在xml文件中的id,与session.selectOne("org.mybatis.UserMapper.deleteBatch",idList)的方法不符合,造成该错误

分享到:
评论

相关推荐

    mybatis-plus 实践及架构原理

    - 自动完成单表CRUD操作(包括简单的单个对象插入、查询、更新、删除操作和批量操作)。 - 提供分页插件,支持自动分页和自定义SQL分页查询。 - 支持Spring环境下根据不同环境加载不同的配置。 - 提供代码自动...

    mybatis-plus源码(mybatis-plus-3.5.1.zip)

    4. **批量插入与更新**:MyBatis-Plus支持一次性插入或更新多条数据,提高了数据处理的效率。 5. **主键生成策略**:内置了多种主键生成策略,如ID_WORKER(分布式雪花算法)、SEQENCE(序列方式)等,可根据数据库...

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架

    只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能。高性能,MyBatis-Flex 采用独特的技术架构、相比许多同类框架,MyBatis-Flex 的在增删改查等方面的性能均超越其 ...

    mybatis-plus-doc-master.zip

    主要功能包括:插入、更新、删除、查询等基本操作,以及分页、条件构造、批量操作等高级特性。 在文档中,你将了解到MyBatis-Plus的基本配置。这通常包括引入依赖、配置实体类扫描、全局配置文件的设置等步骤。例如...

    mybatis-3.5.9 源码(mybatis-3-mybatis-3.5.9.zip)

    有 SimpleExecutor、ReuseExecutor 和 BatchExecutor 三种实现,分别对应简单执行、重用 Statement 和批量操作的场景。 4. **ParameterHandler 参数处理器** - ParameterHandler 负责将 Java 对象的参数映射到 SQL...

    Mybatis-plus自动生成代码

    Mybatis-plus是一款基于Mybatis和Spring的轻量级框架,它扩展了Mybatis的功能,提供了更便捷的操作数据库的方式。在项目开发中,Mybatis-plus的一个重要特性就是其代码生成器,能够极大地提高开发效率,减少手动编写...

    mybatis-plus代码生成器模版代码

    Mybatis-Plus是一款基于Mybatis框架的扩展工具,它在Mybatis的基础上简化了开发工作,提供了包括自动 CRUD 操作、条件构造器、批量操作、关联查询等实用功能。本资源包含的是Mybatis-Plus的代码生成器模板代码,用于...

    18-MyBatis-Plus_mybatis-plus_

    - **插入(Insert)**: MyBatis-Plus 提供了单表插入、批量插入和主键自增等多种方式,只需一行代码即可完成。 - **查询(Select)**: 支持根据主键查询、条件查询、多条件组合查询、分页查询等,提供了丰富的查询...

    mybatis-spring-1.0.0-RC3-bundle

    此外,对于高并发场景,还可以通过设置SqlSessionTemplate的ExecutorType为BATCH或REUSE,提高批量操作的性能。 总结,MyBatis-Spring 1.0.0-RC3是MyBatis与Spring整合的重要版本,它使得两大框架的协同工作变得...

    mybatis-plus&实践&及架构原理

    - **批量操作**:支持单表的批量插入、更新和删除,减少数据库交互次数,提高性能。 6. **架构原理** MyBatis-Plus的底层原理主要基于MyBatis,通过拦截器机制实现了对SQL的动态构造和执行。它的设计模式主要是...

    mybatis-generator

    mybatis-generator-plus通过自动生成支持批量插入的方法,使得开发者能够高效地一次性处理大量数据,减少了数据库操作的次数,从而提高了性能。批量插入通常会涉及到SQL语句的优化,包括合理设置批处理的大小,以...

    Mybatis-Plus-Generator

    Mybatis-Plus-Generator是一个基于Mybatis-Plus框架的实用工具,主要用于简化数据库表的 CRUD(创建、读取、更新、删除)操作以及批量数据导入的功能。Mybatis-Plus是Mybatis的一个扩展,它提供了很多便捷的数据操作...

    mybatis-3.4.5开发jar包

    SimpleExecutor每次执行一个SQL,而BatchExecutor适用于批量操作。 6. **ParameterHandler**: 负责设置SQL参数,将Java对象转换为数据库可识别的参数。 7. **ResultSetHandler**: 处理查询结果,将数据库返回的...

    mybatis-plus-3.0.rar

    - **批量操作**:提供批量插入、批量更新、批量删除等操作,提升数据库操作效率。 - **乐观锁支持**:通过@TableVersion字段,可以轻松实现乐观锁,防止并发数据冲突。 5. **与MyBatis的差异**: - MyBatis-Plus...

    mybatisplus-spring-boot_mybatis-plus整合_shiro_plus_

    MP 的主要特性包括:自动 CRUD 生成、条件构造器、批量操作、分页插件、性能分析等。 Spring Boot 是基于 Spring 框架的一个快速开发工具,它简化了新 Spring 应用的初始搭建以及开发过程。Spring Boot 通过默认...

    mybatis-plus

    此外,MyBatis-Plus还提供了丰富的API,如批量操作、分页查询、填充实体对象、数据权限控制等。批量操作可以高效地执行多个相似的数据库操作,而分页查询则能方便地处理大数据量的展示问题。填充实体对象功能允许...

    springboot+mybatis-plus集成

    MyBatis Plus是在MyBatis的基础上进行扩展的,它提供了更为简便的CRUD操作,如自动填充主键、批量插入、条件构造器等。MyBatis Plus的集成使得我们可以专注于业务逻辑,而不必花费过多时间在SQL编写上。 集成Spring...

    mybatis-plus-demo.zip

    MyBatis-Plus 是 MyBatis 的一个扩展,它提供了许多方便实用的功能,简化了开发工作,例如自动 CRUD 操作、条件构造器、批量插入、主键生成等。本项目 "mybatis-plus-demo" 是一个基于 SpringBoot 框架整合 MyBatis-...

    mybatis-plus学习项目笔记

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

    SpringBoot整合EasyExcel+MyBatis-Plus实现Excel批量导入和导出

    MyBatis-Plus是在MyBatis的基础上进行扩展,提供了更为强大的CRUD操作,包括条件构造器、批量插入、主键自增等功能,极大地提高了开发效率。它是一个轻量级的持久层框架,能够与SpringBoot无缝集成,使得数据库操作...

Global site tag (gtag.js) - Google Analytics