`
Franciswmf
  • 浏览: 796935 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mybatis针对Oracle数据库进行(单个或多个条件)批量操作(新增、修改、删除)的sql写法--mysql

 
阅读更多
1、批量新增:
 
方式一:
<insert id="addMonthDutyIntoDB" parameterType="java.util.List">
     insert into TB_DUTY select SEQ_TB_DUTY.nextval,A.* from(
    <foreach collection="list" item="item" index="index" separator="union">  
      SELECT  #{item.dscd}, #{item.unitId},#{item.year},#{item.month},#{item.day},#{item.weekDay}, 
      #{item.morningPeopleIds}, #{item.morningPeopleNames},#{item.afternoonPeopleIds},#{item.afternoonPeopleNames},#{item.eveningPeopleIds}, 
      #{item.eveningPeopleNames},#{item.leaderIds},#{item.leaderNames},#{item.flag},#{item.remark},#{item.day0} FROM DUAL
    </foreach> 
    ) A 
  </insert>
方式二:
<!-- 批量新增-->
<insert id="batchAdd" parameterType="java.util.List">  
	 insert all 
	 <foreach collection="list" item="item" index="index" separator="" >    
		into t_student ( a, b ) values( #{item.a}, #{item.b} )
	 </foreach>   
	 select 1 from dual   
</insert>

2、批量修改:
单个条件、单个修改字段:
 <update id="auditMultiByIds" parameterType="java.util.List">  
   update tb_code_name_result_new set state=#{state,jdbcType=INTEGER} where id in
    <foreach collection="list" item="item" index="index" open="(" separator="," close=")" >  
        #{item}  
    </foreach>  
</update>

多个条件、多个修改字段:
<update id="updateByMultiConditions" parameterType="java.util.List">   
    <foreach collection="list" item="item" index="index" open="begin" close="; end;" separator=";"> 
     update TB_DUTY 
     <set>
      <if test="item.morningPeopleIds != null and item.morningPeopleIds != '' " >
     MORNING_PEOPLE_IDS=#{item.morningPeopleIds,jdbcType=VARCHAR},
      </if>
      <if test="item.morningPeopleNames != null and item.morningPeopleNames != '' " >
     MORNING_PEOPLE_NAMES=#{item.morningPeopleNames,jdbcType=VARCHAR}, 
      </if> 
      <if test="item.afternoonPeopleIds != null and item.afternoonPeopleIds != '' " >
     AFTERNOON_PEOPLE_IDS=#{item.afternoonPeopleIds,jdbcType=VARCHAR},  
      </if>
      <if test="item.afternoonPeopleNames != null and item.afternoonPeopleNames != '' " >
     AFTERNOON_PEOPLE_NAMES=#{item.afternoonPeopleNames,jdbcType=VARCHAR}, 
      </if> 
      <if test="item.eveningPeopleIds != null and item.eveningPeopleIds != '' " >
     EVENING_PEOPLE_IDS=#{item.eveningPeopleIds,jdbcType=VARCHAR},  
      </if>
      <if test="item.eveningPeopleNames != null and item.eveningPeopleNames != '' " >
     EVENING_PEOPLE_NAMES=#{item.eveningPeopleNames,jdbcType=VARCHAR},
      </if>
      <if test="item.leaderIds != null and item.leaderIds != '' " >  
     LEADER_IDS=#{item.leaderIds,jdbcType=VARCHAR},  
      </if>
     <if test="item.leaderNames != null and item.leaderNames != '' " >
     LEADER_NAMES=#{item.leaderNames,jdbcType=VARCHAR},
     </if>
     </set> 
     where DUTY_ID=#{item.dutyId,jdbcType=INTEGER}
    </foreach>
</update>


3、批量删除:
单个条件:
<delete id="delMultiByIds" parameterType="java.util.List">  
     delete from TB_CODE_NAME_RESULT_NEW
    where ID in
    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">   
        #{item}   
    </foreach>  
</delete>

多个条件:
<delete id="delMultiByIds2" parameterType="java.util.List"> 
  delete from tb_duty A
  where exists 
  ( 
   select 1 from(
    <foreach collection="list" item="item" index="index" separator="union all">  
     select  B.* from tb_duty B where 1=1 and  B.dscd=${item.dscd} and B.unit_id=${item.unitId} and 
      B.year=${item.year} and B.month=${item.month} and B.flag=${item.flag} 
    </foreach>
    )S where  A.duty_id=S.duty_id
  )
</delete>

多个条件第2种形式:
<!-- 成功删除返回的是-1而不是删除的记录数 -->
	 <delete id="delMultiByIds" > 
	    <foreach collection="list" item="item" index="index"  open="begin" close="; end;" separator=";">  
		delete from tb_duty_statistics a 
		where a.person_id 
		in(
		select b.person_id from tb_duty_person_info b where b.dscd=#{dscd,jdbcType=CHAR} and b.unit_id=#{unitId,jdbcType=INTEGER}
		) 
		and substr(a.duty_id,1,7)=#{item.dutyId,jdbcType=CHAR}
		</foreach>
	</delete>

4、批量查询:(未验证)
<select id="selectBySomePoiIds" resultType="list" parameterType="java.util.Map">      
	SELECT <include refid="Base_Column_List" /> FROM 表名      
	WHERE poi_id in
	
	<foreach collection="poiIds" item="poiId" index="index" open="(" close=")" separator=",">            
	#{poiId}        
	</foreach>
	
	AND pass_uid = #{passUid}          
	<if test="status != null">            
	AND status = #{status,jdbcType=BIGINT}           
	</if>  
</select>


PS:带in的查询:
4.1mybatis sql in 查询总结
http://blog.csdn.net/u013628152/article/details/51184641


String[] array={CommonEnum.INITIATIVE_PAYMENT_AWARD_FUN.getCode(),CommonEnum.INITIATIVE_PAYMENT_AWARD_NUM.getCode()};
            	List<ModuleConfigEntity> list=moduleConfigRepository.selectMultiRecords(array);
            	if(CollectionUtils.isNotEmpty(list)){
            		for (ModuleConfigEntity moduleConfigEntity : list) {
						if(CommonEnum.INITIATIVE_PAYMENT_AWARD_FUN.getCode().equals(moduleConfigEntity.getConfigName())){
							unionPaySltEntities.get(0).setInitiativePaymentAwardFun(moduleConfigEntity.getConfigValue());//开关
						}else if(CommonEnum.INITIATIVE_PAYMENT_AWARD_NUM.getCode().equals(moduleConfigEntity.getConfigName())){
							unionPaySltEntities.get(0).setInitiativePaymentAwardNum(moduleConfigEntity.getConfigValue());//数量
						}
					}
            	}
//
<!--根据config_name查询多个开关配置-->
	<select id="selectMultiRecords" resultType="ModuleConfigEntity">
		SELECT  
		CONFIG_NAME           configName,
		CONFIG_VALUE          configValue
		FROM t_ddq_module_config 
		WHERE DELETE_FLAG=0
		and CONFIG_NAME in
		<foreach item="item" index="index" collection="array" open="(" separator="," close=")">  
		     #{item}  
		</foreach>  
	</select>


5、mapper常用写法
<resultMap id="BaseResultMap" type="com.xyxc.CustomerInfoEntity">
	<id column="id" property="id" />
	<result column="aa" property="aa" />
	<result column="bb" property="bb" />
</resultMap>

<sql id="table_column_no_id">
	aa,
	bb ,
	cc,
	dd,
	ee
</sql>

<sql id="columns" >
	id,<include refid="table_column_no_id"/>
</sql>

<sql id="table_name" >
	TableName
</sql>

<insert id="insert" parameterType="com.xyxc.CustomerInfoEntity" useGeneratedKeys="true" keyProperty="installmentId">
	<![CDATA[
		INSERT INTO T_DDQ_INSTALLMENT_INFO (
		aa,
		bb ,
		cc,
		dd,
		ee
		)
		VALUES (
		#{sltAccountId},
		#{loanPeriodNo},
		#{scheduleAmount},
		now(),
		now()
		)
	]]>

	<selectKey resultType="Long" keyProperty="installmentId" order="AFTER">
		<![CDATA[ SELECT LAST_INSERT_ID()  AS installmentId  ]]>
	</selectKey>
</insert>

分享到:
评论

相关推荐

    mybatis连接oracle实例

    在Eclipse中创建一个JUnit测试类,注入`TestService`,并调用其方法进行数据库操作,如查询、插入、更新或删除,以验证MyBatis是否成功连接到Oracle数据库。 通过以上步骤,你就完成了MyBatis连接Oracle数据库的...

    mybatis-sql-dialect

    通过使用SQL方言包,MyBatis能够更好地适应各种数据库,如MySQL、Oracle和DB2,使得在切换数据库时无需对SQL语句进行大量修改。 1. **MyBatis框架概述** MyBatis是一个轻量级的ORM(对象关系映射)框架,它消除了...

    springboot +mybatis+oracle 配置多个数据源,配置两个数据库信息

    在Spring Boot项目中,我们经常会遇到需要连接多个数据库的需求,比如主从数据库、读写分离等场景。本配置示例将详细介绍如何在Spring Boot中整合MyBatis与Oracle数据库,并配置两个不同的数据源。 首先,我们需要...

    mybatis 连接mysql数据库时所需所有jar包

    在Java开发中,MyBatis是一个非常流行的持久层框架,它简化了数据库操作与Java对象之间的映射。本文将详细讲解如何使用MyBatis连接MySQL数据库,并介绍在该过程中所需的jar包及其作用。 首先,我们要了解MyBatis的...

    基于mybatis-generate 的Oracle数据库的分页生成插件

    mybatis 分页 mybatis-...大家知道mybatis自动生成代码是没有分页功能的 我在网上找了很久 有很多内容 但正真可以使用的少之又少 本人整合了网上的资源 整理了基于Oracle数据库的mybatis插件 经测试可以完美运行。。

    MyBatis动态SQL,MyBatis批量插入(Oracle数据库)[收集].pdf

    MyBatis动态SQL和批量插入的应用 MyBatis是一款功能强大且灵活的持久层框架,提供了多种方式来对数据库进行交互。其中,动态SQL是一种非常强大的特性,能够根据不同的条件生成不同的SQL语句。下面将详细介绍MyBatis...

    SpringBoot+Mybatis+Oracle代码demo

    在本项目"SpringBoot+Mybatis+Oracle代码demo"中,开发者旨在提供一个集成SpringBoot、Mybatis和Oracle数据库的示例,以帮助初学者更好地理解和应用SpringBoot框架。下面将详细阐述这三个核心技术及其在项目中的应用...

    SpringBoot整合Mybatis-Plus+Oracle+Mysql

    本教程将深入探讨如何利用SpringBoot整合Mybatis-Plus,同时支持Oracle和MySQL数据库,并通过Nacos作为注册中心,以及使用Swagger2进行API文档的生成。 首先,让我们了解SpringBoot的核心优势。SpringBoot简化了...

    SpringBoot+mybatis+Oracle整合代码

    7. **测试**:在"测试通过"的描述中,我们可以理解项目已经进行了单元测试或集成测试,确保了SpringBoot、MyBatis和Oracle的正确集成。这可能涉及到JUnit或者Spring Boot的@Test注解,以及Mockito等测试工具。 8. *...

    mybatis使用annotation在mysql,oracle上进行批量处理

    首先,我们要理解MyBatis的核心原理,它是一个基于Java的持久层框架,通过XML或注解来映射SQL语句,简化了Java与数据库之间的交互。在使用注解进行批量处理时,MyBatis提供了动态SQL的功能,使得我们可以在不写大量...

    SpringBoot集成MyBatis-Plus实现国产数据库适配.docx

    * 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库 * 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char类型字段进行特殊处理,以确保查询结果的正确性。 首先,需要了解...

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    本篇将深入探讨如何在Spring Boot项目中整合Mybatis,实现对SQL Server数据库的跨库批量插入操作。 首先,我们需要在Spring Boot项目中引入相关的依赖。对于Mybatis的支持,我们需要添加Mybatis和其Spring Boot ...

    mybatis + oracle demo

    【标题】"mybatis + oracle demo"是一个关于如何结合MyBatis框架与Oracle数据库进行实际操作的示例项目。这个项目旨在为初学者提供一个简单易懂的起点,帮助他们快速掌握MyBatis在Oracle环境下的应用。 【描述】...

    mybatis连接Oracle所用的jar包

    在使用MyBatis与Oracle数据库进行交互时,通常需要一些特定的库来确保连接和操作的顺利进行。这里提到的两个jar包,"ojdbc6.jar"和"mybatis-3.4.4.jar",正是实现这一目的的关键组件。 首先,"mybatis-3.4.4.jar"是...

    idea配置maven+Springboot+mybatis+oracle

    本知识点将详细介绍如何在Idea中配置Maven、Spring Boot、MyBatis以及Oracle数据库,实现一个完整的Java Web项目架构。 **一、配置Maven** 1. **安装Maven**: 首先确保你的系统中已经安装了Maven,可以在命令行...

    mybatis-oracle逆向工程工具

    MyBatis-Oracle逆向工程工具是一款高效实用的开发辅助软件,专为使用MyBatis框架和Oracle数据库的开发者设计。这款工具的核心功能是自动生成与数据库表结构对应的MyBatis映射文件、实体类以及DAO接口,极大地提高了...

    mybatis代码生成工具(oracle和mysql)

    在提供的压缩包文件名"generator-oracle-mysql"中,我们可以推测其包含了用于生成Oracle和MySQL数据库代码的相关配置和脚本。可能包括: 1. 配置文件:这些文件定义了如何连接到数据库,选择要生成的表,以及如何...

    mybatis框架压缩包及MySQL驱动包mysql-connector-java-5.1.37-bin.jar

    MyBatis是一个流行的Java持久层框架,它简化了数据库与Java应用程序之间的交互,通过XML或注解方式将SQL语句映射为Java方法,提供了一种灵活的数据访问接口。本压缩包包含MyBatis框架所需的全部依赖,以及适用于...

    SpringBoot使用mybatis批量新增500万数据到mysql数据库Demo

    在本项目中,我们主要探讨的是如何利用SpringBoot集成Mybatis框架进行大数据量(例如500万条)的批量插入操作,并将其高效地存入MySQL数据库。这个Demo旨在提供一个学习实例,帮助开发者理解并优化大数据处理的性能...

Global site tag (gtag.js) - Google Analytics