GVKun编程网logo

mybatis批量操作(mybatis批量操作标签)

11

本文将带您了解关于mybatis批量操作的新内容,同时我们还将为您解释mybatis批量操作标签的相关知识,另外,我们还将为您提供关于125.mybaties批量操作批量新增批量更新批量删除批量根据i

本文将带您了解关于mybatis批量操作的新内容,同时我们还将为您解释mybatis批量操作标签的相关知识,另外,我们还将为您提供关于125.mybaties 批量操作 批量新增 批量更新 批量删除 批量根据 id 查询、JavaEE——Mybatis(19)--MyBatis实用场景 2.批量操作、mybaits批量操作数据库、mybatis (oracle) 下的 批量操作如何实现的实用信息。

本文目录一览:

mybatis批量操作(mybatis批量操作标签)

mybatis批量操作(mybatis批量操作标签)

List类型

Mapper.java

public int updateAccount(List<OrderJob> orderJobs);

Mapper.xml

<update id="updateAccount" parameterType="com.hongyums.quartz.domain.OrderJob">
    update biz_mn_account
    set
    <trim prefix="ZJE=case " suffix="end,">
        <foreach collection="list" item="item" >
            when dlmc=#{item.dlmc} then #{item.zje}
        </foreach>
    </trim>

    <trim prefix="YQRZJE=case " suffix="end,">
        <foreach collection="list" item="item" >
            when dlmc=#{item.dlmc} then #{item.yqrzje}
        </foreach>
    </trim>

    <trim prefix="YXFJE=case " suffix="end,">
        <foreach collection="list" item="item" >
            when dlmc=#{item.dlmc} then #{item.yxfje}
        </foreach>
    </trim>
    GXSJ=SYSDATE()
    where DLMC in
    <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
        #{item.dlmc}
    </foreach>

</update>

如果是Array的话,collerciton="array"

 

Map类型

Mapper.java

@Data
public class BizMnCreateTableBO {
    // 表名称
    private String tableName;
    // 字段
    private Map<String,String> parmes;
    }
}

Mapper.xml

<update id="createNewTable" parameterType="com.hongyums.system.domain.vo.BizMnCreateTableBO">
    CREATE TABLE ${tableName} (
      id bigint(20) NOT NULL AUTO_INCREMENT comment '合同模板编号',
      dlmc varchar(20) comment '登录名称',
      <foreach index="key" item="value" collection="parmes" separator=",">
       ${key} varchar(50) DEFAULT NULL comment #{value}
      </foreach>
      , PRIMARY KEY (id))
</update>

 我尝试 将${key}改为#{key} 但是发现报错,暂不知原因。

 

125.mybaties 批量操作 批量新增 批量更新 批量删除 批量根据 id 查询

125.mybaties 批量操作 批量新增 批量更新 批量删除 批量根据 id 查询

1. 效果

 

 

 

 

 

2. 代码 sql

 

<!--1.批量新增-->
<insert id="batchInsert" parameterType="java.util.List">
    insert into t_user (username,hobby,workage)
    values
    <foreach collection ="list" item="user" index= "index"
             separator =",">
        (#{user.username},#{user.hobby},#{user.workage})
    </foreach >
</insert>

 

 

<!-- 2.1 批量更新单个字段    优化方法 https://www.cnblogs.com/javalanger/p/10899088.html  -->
<update id="updateSingleData" parameterType="java.util.List">
      <foreach collection="list" item="user" index="index" separator=";">
          update t_user
          <set>
              <if test="user.hobby != null and user.hobby != ''''" >
                   hobby = #{user.hobby}
              </if>
          </set>
          where username = #{user.username}
      </foreach>
  </update>

  <!--3.批量更新多个字段 -->
  <update id="updateMoreData" parameterType="java.util.List">
      update t_user
      <trim prefix="set" suffixOverrides=",">

          <trim prefix="hobby =case" suffix="end,">
              <foreach collection="list" item="i" index="index">
                  <if test="i.hobby!=null">
                      when username=#{i.username} then #{i.hobby}
                  </if>
              </foreach>
          </trim>

          <trim prefix="workage =case" suffix="end,">
              <foreach collection="list" item="i" index="index">
                  <if test="i.workage!=null">
                      when username=#{i.username} then #{i.workage}
                  </if>
              </foreach>
          </trim>

      </trim>
      where

      <foreach collection="list" separator="or" item="i" index="index" >
          username=#{i.username}
      </foreach>


  </update>

 

<!-- 批量查询 -->
<select id="batchSelect"
        resultType="cn.ma.ddddd.domain.User2">
    select
    *
    from t_user where  username in
    <foreach collection="list" item="username" open="(" close=")" separator=",">
        #{username}
    </foreach>

</select>

 

 

<!-- 批量删除 -->
<delete id="batchDel">
    delete
    from t_user where  username in
    <foreach collection="list" item="username" open="(" close=")" separator=",">
        #{username}
    </foreach>

</delete>

 

3. mapper 接口类 及实体类

 

 

 

 

 

 

 

JavaEE——Mybatis(19)--MyBatis实用场景 2.批量操作

JavaEE——Mybatis(19)--MyBatis实用场景 2.批量操作

测试时:只需要在创建SQLSession的openSession时,指定SqlSession openSession = sqlSessionFactory.openSession( ExecutorType.BATCH );

 

@Test
	public void testBatch() throws IOException {
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

		//可以执行批量操作的sqlSession
		SqlSession openSession = sqlSessionFactory.openSession( ExecutorType.BATCH );
		long start = System.currentTimeMillis();
		try{
			StudentMapper studentMapper = openSession.getMapper(StudentMapper.class);

			for(int i = 0; i < 10000; ++i){
				studentMapper.addStu( new Student( UUID.randomUUID().toString().substring( 0, 3 ), "girl", 18) );
			}

			openSession.commit();
			long end = System.currentTimeMillis();
			//批量:(预编译sql一次==》设置参数10000次==》执行1次)8070ms
			//Parameters: 236(String), girl(String), 18(Integer)
			//非批量:(预编译sql,设置参数,执行)==》10000次  18153ms
			System.out.println("执行时长:" + (end - start));

		}finally{
			openSession.close();
		}

	}

  

而与Spring整合时:在Spring的配置文件applicationContext.xml中配置

使用时:

在Service层

 

注意:
  • 1、批量操作是在session.commit()以后才发送sql语句给数据库进行执行的
  • 2、如果我们想让其提前执行,以方便后续可能的查询操作获取数据,我们可以使用sqlSession.flushStatements()方法,让其直接冲刷到数据库进行执行。

mybaits批量操作数据库

mybaits批量操作数据库

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 ORACLE数据库: insert id="batchInsertRoleRMenu" parameterType="java.util.List" INSERT INTO QCMS_PUB_ROLE_R_MENU( MENU_ID, ROLE_ID ) ( foreach collection="list" item="item" index="in

欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入

    ORACLE数据库:

   

    INSERT INTO QCMS_PUB_ROLE_R_MENU(

    MENU_ID,

    ROLE_ID

    ) (

   

    select

    #{item.menuId,jdbcType=NUMERIC},

    #{item.roleId,jdbcType=NUMERIC}

    from dual

   

    )

   

    mybaits等其他数据库:

   

    INSERT INTO QCMS_PUB_ROLE_R_MENU(

    MENU_ID,

    ROLE_ID

    )VALUES

   

    (

    #{item.menuId,jdbcType=NUMERIC},

    #{item.roleId,jdbcType=NUMERIC}

    )

   

   

mybaits批量操作数据库

mybatis (oracle) 下的 批量操作如何实现

mybatis (oracle) 下的 批量操作如何实现

如题,采用了spring的事务管理 

关于mybatis批量操作mybatis批量操作标签的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于125.mybaties 批量操作 批量新增 批量更新 批量删除 批量根据 id 查询、JavaEE——Mybatis(19)--MyBatis实用场景 2.批量操作、mybaits批量操作数据库、mybatis (oracle) 下的 批量操作如何实现等相关内容,可以在本站寻找。

本文标签: