本文将带您了解关于mybatis批量操作的新内容,同时我们还将为您解释mybatis批量操作标签的相关知识,另外,我们还将为您提供关于125.mybaties批量操作批量新增批量更新批量删除批量根据i
本文将带您了解关于mybatis批量操作的新内容,同时我们还将为您解释mybatis批量操作标签的相关知识,另外,我们还将为您提供关于125.mybaties 批量操作 批量新增 批量更新 批量删除 批量根据 id 查询、JavaEE——Mybatis(19)--MyBatis实用场景 2.批量操作、mybaits批量操作数据库、mybatis (oracle) 下的 批量操作如何实现的实用信息。
本文目录一览:- mybatis批量操作(mybatis批量操作标签)
- 125.mybaties 批量操作 批量新增 批量更新 批量删除 批量根据 id 查询
- JavaEE——Mybatis(19)--MyBatis实用场景 2.批量操作
- mybaits批量操作数据库
- mybatis (oracle) 下的 批量操作如何实现
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 查询
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.批量操作
测试时:只需要在创建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批量操作数据库
欢迎进入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数据库:
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}
)
mybatis (oracle) 下的 批量操作如何实现
如题,采用了spring的事务管理关于mybatis批量操作和mybatis批量操作标签的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于125.mybaties 批量操作 批量新增 批量更新 批量删除 批量根据 id 查询、JavaEE——Mybatis(19)--MyBatis实用场景 2.批量操作、mybaits批量操作数据库、mybatis (oracle) 下的 批量操作如何实现等相关内容,可以在本站寻找。
本文标签: