曾在学习Redis时,技术牛画了一个数据库的发展图,Redis最终发展竟是关系型数据库;你恨不得想说个OH ,FUCK!就像IBatis发展到Mybatis,最后发展方向极可能是HIbernate,这个...
本次批量新增或者修改功能,数据库类型是Oracle,表是BATCH_INSERT_TEST、POJO类BatchOptionTest、接口BatchOptionTestMapper和配置文件BatchOptionTestMapper.xml。
create table BATCH_OPTIONS_TEST
(
ID VARCHAR2(50) not null,
NAME VARCHAR2(50)
)
public class BatchOptionTest{
private String id ;
private String name;
/**get和set省去**/
}
public interface BatchOptionTestMapper {
int batchInsertTestMethod(@Param(value="list")List<BatchOptionTest> dataList);
}
1:MyBatis 批量新增
(1)批量新增方式1
INSERT INTO BATCH_INSERT_TEST (ID,NAME) VALUES('1','SMARTISAN T1');
INSERT INTO BATCH_INSERT_TEST (ID,NAME) VALUES('2','坚果');
结合MyBatis的foreach标签,BatchInsertTestMapper.xml中的方法可以如下定义。
<insert id="batchInsertTestMethod" parameterType="List">
<if test="list != null and list.size() > 0">
<foreach collection="list" item="obj" open="BEGIN" separator=";" close=";END;" >
INSERT INTO BATCH_OPTIONS_TEST(ID,NAME) VALUES (#{obj.id,jdbcType=VARCHAR},#{obj.name,jdbcType=VARCHAR})
</foreach>
</if>
</insert>
测试新增数据成功,返回值是-1(关于返回值,可以参考Oracle Doc 的解释,因为我也没弄清楚,哈哈)。
(2)批量新增方式2
INSERT INTO BATCH_INSERT_TEST(ID,NAME)
SELECT '1','SMARTISAN T1' FROM DUAL
UNION ALL
SELECT '2','坚果' FROM DUAL
结合MyBatis的foreach标签,BatchOptionTestMapper.xml中的方法可以如下修改。
<insert id="batchInsertTestMethod" parameterType="List">
<if test="list != null and list.size() > 0">
INSERT INTO BATCH_OPTIONS_TEST(ID,NAME)
<foreach collection="list" item="obj" separator="UNION ALL">
SELECT (#{obj.id,jdbcType=VARCHAR},#{obj.name,jdbcType=VARCHAR}) FROM DUAL
</foreach>
</if>
</insert>
测试新增数据成功,返回值等于list的大小。
(3) 总结
批量新增第二种方式更好,也可以根据实际需求,批次批量新增。
2:MyBatis 批量更新
接口BatchOptionTestMapper新增两个更新方法。
public interface BatchOptionTestMapper {
int batchUpdateTestMethodOne(@Param(value="list")List<String> dataList,@Param(value="name")String name);
int batchUpdateTestMethodTwo(@Param(value="list")List<BatchOptionTest> dataList);
}
(1)批量更新方式1 (比如将ID是1和2的数据name修改为Smartisan T2)
<insert id="batchUpdateTestMethodOne" >
<if test="list != null and list.size() > 0">
UPDATE BATCH_OPTIONS_TEST
<set>
NAME = #{name,jdbcType=VARCHAR}
</set>
<where>
ID IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id,jdbcType=VARCHAR}
</foreach>
</where>
</if>
</insert>
测试更新数据成功,返回值是list的size大小。
(2)批量更新方式2(比如将ID是1的数据name修改为Smartisan T2,ID是2的数据name修改为坚果MINI)
<insert id="batchUpdateTestMethodTwo" parameterType="List" >
<if test="list != null and list.size() > 0">
<foreach collection="list" item="obj" index="index" open="begin" close=";end;" separator=";">
UPDATE BATCH_OPTIONS_TEST
<set>
<if test=" obj.name != null and obj.name != '' ">
NAME = #{obj.name,jdbcType=VARCHAR}
</if>
</set>
<where>
ID=#{obj.id,jdbcType=VARCHAR}
</where>
</foreach>
</if>
</insert>
测试更新数据成功,返回值是-1(关于返回值,可以参考Oracle Doc 的解释,因为我也没弄清楚,哈哈)。
分享到:
相关推荐
只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢
主要介绍了Mybatis批量插入数据返回主键的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)
跨库批量插入
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。这篇文章主要介绍了mybatis中批量插入的两种方式(高效插入)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
主要介绍了mybatis学习之路mysql批量新增数据的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
mybatis-plus_batch_insert:mybatis_plus添加批量插入
使用方法请看博客https://blog.csdn.net/bandaotixiruiqiang/article/details/72478361#comments_12931827
主要介绍了tk.mybatis扩展通用接口使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
使用maven工具构建SSM框架,实现分页功能,使用拦截器打印完整sql功能,方便调试,多表联合查询方法实现,新增批量插入和批量更新操作,加入缓存机制
主要介绍了MybatisPlus中插入数据后获取该对象主键值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
扩展 Mybatis-Generator,自动生成支持 Oracle、Mysql、Sqlserver 分页查询和批量插入操作的自动代码,支持从 Mapper 接口读取数据源名称;支持 Oracle 使用 SEQUENCE 实现自增主键:需要事先建立好表主键对应的...
批量插入 batchInsert 条件查询返回一个 selectFirstByExample 核心特性 按照界面步骤轻松生成代码,省去XML繁琐的学习与配置过程 保存数据库连接与Generator配置,每次代码生成轻松搞定 内置常用插件,比如分页插件...
java快速插入千万级数据,亲测91秒插入1700万数据!!!
安装lodop后,使用lodop的js控件,将自己需要的数据传入打印,数据库持久层使用mybatis,包含批量新增插入数据操作。
服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:Activemq,使用spring-jms 负载均衡:nginx 搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis...
1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 ...
1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 ...