mybatis 注解方式批量插入

2023-11-14

原文地址:http://blog.csdn.net/isea533/article/details/21237175


foreach一共有三种类型,分别为List,[](array),Map三种。

foreach的第一篇用来将List和数组(array)。


下面表格是我总结的各个属性的用途和注意点。

foreach属性

属性 描述
item 循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details。
具体说明:在list和数组中是其中的对象,在map中是value。
该参数为必选。
collection 要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象没有默认的键
当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:
如果User有属性List ids。入参是User对象,那么这个collection = "ids"
如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"
上面只是举例,具体collection等于什么,就看你想对那个元素做循环。
该参数为必选。
separator 元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。
open foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选。
close foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。
index 在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。


下面是测试

SQL

[sql]  view plain  copy
  1. drop table users if exists;  
  2.   
  3. create table users (  
  4.   id int,  
  5.   name varchar(20)  
  6. );  
  7.   
  8. insert into users (id, namevalues(1, 'User1');  
  9. insert into users (id, namevalues(2, 'User2');  
  10. insert into users (id, namevalues(3, 'User3');  
  11. insert into users (id, namevalues(4, 'User4');  
  12. insert into users (id, namevalues(5, 'User5');  
  13. insert into users (id, namevalues(6, 'User6');  


User类



Mapper.xml

[html]  view plain  copy
  1. <select id="countByUserList" resultType="_int" parameterType="list">  
  2. select count(*) from users  
  3.   <where>  
  4.     id in  
  5.     <foreach item="item" collection="list" separator="," open="(" close=")" index="">  
  6.       #{item.id, jdbcType=NUMERIC}  
  7.     </foreach>  
  8.   </where>  
  9. </select>  

测试代码:

[java]  view plain  copy
  1. @Test  
  2. public void shouldHandleComplexNullItem() {  
  3. SqlSession sqlSession = sqlSessionFactory.openSession();  
  4. try {  
  5.   Mapper mapper = sqlSession.getMapper(Mapper.class);  
  6.   User user1 = new User();  
  7.   user1.setId(2);  
  8.   user1.setName("User2");  
  9.   List<User> users = new ArrayList<User>();  
  10.   users.add(user1);  
  11.   users.add(null);  
  12.   int count = mapper.countByUserList(users);  
  13.   Assert.assertEquals(1, count);  
  14. finally {  
  15.   sqlSession.close();  
  16. }  
  17. }  

测试日志:

DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Setting autocommit to false on JDBC Connection [org.hsqldb.jdbc.JDBCConnection@4b83b34e]
DEBUG [main] - Resetting autocommit to true on JDBC Connection [org.hsqldb.jdbc.JDBCConnection@4b83b34e]
DEBUG [main] - Closing JDBC Connection [org.hsqldb.jdbc.JDBCConnection@4b83b34e]
DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Setting autocommit to false on JDBC Connection [org.hsqldb.jdbc.JDBCConnection@763d1932]
DEBUG [main] - ==>  Preparing: select count(*) from users WHERE id in ( ? , ? ) 
DEBUG [main] - ==> Parameters: 2(Integer), null
DEBUG [main] - <==      Total: 1
DEBUG [main] - Resetting autocommit to true on JDBC Connection [org.hsqldb.jdbc.JDBCConnection@763d1932]
DEBUG [main] - Closing JDBC Connection [org.hsqldb.jdbc.JDBCConnection@763d1932]



上面这个例子是List的,但是和数组的情况基本一样,所以不针对数组进行测试了。可以看到这个例子的内容是很简单的,实际上List,array,map也可以互相嵌套,可以用多个foreach去执行,如果想看这样一个例子,可以移步这里:

新人求解问题哦,被卡了两天了,悲伤..

上面这个问题就遇到了list,map一起用的问题,3楼是问题的答案,可以参考一看。


由于map的key,value比较特殊,所以下次再说。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis 注解方式批量插入 的相关文章

  • 计算机组成原理一些要背的内容

    cceed1ab 77ed 43f0 8629 aea9e3391770 1 1冯诺依曼的存储程序的计算机设计基本思想如下 用二进制形式表示数据和指令 指令由操作码和地址码组成 采用存储程序 即把编写好的程序和原始数据预先放入计算机主存储器
  • css中::before ::after的用法

    一 介绍 before和 after是伪元素 css3中为了与伪类做区别 伪元素采用双冒号的写法 但因为兼容性的问题 所以现在大部分还是统一的单冒号 比如 first line first letter before after等 但新的在
  • 算法的时间复杂度、空间复杂度

    文章目录 数据结构 算法 数据结构与算法的关系 时间复杂度 O 1 O n O 1 O n O n O n 2 O log2 n 空间复杂度 O 1 O n O n 2 常用算法的时间 空间复杂度 数据结构 数据结构是计算机存储 组织数据的
  • Spring Colud Alibaba

    一 SpringColudAlibaba Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案 此项目包含开发分布式应用微服务的必需组件 方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布
  • SHA256WithRSA

    在上文中了解到SHA和RSA 工作中恰好用到扩展应用 SHA256WithRSA 本文总结下学习过程 备忘 再提供另外一种方法 实现Java版pem密钥和 Net版xml密钥相互转换的方法 密钥转换 准备 引入BouncyCastle Cr
  • java类添加属性_Java 类动态添加属性字段的操作

    说明 做项目中遇到一种场景 需要根据查询时间段 获取时间段中中每个月份对应的金额 费用统计 如截图中的两列 因为列是动态的 首先想到的就是后天拼接json格式字符串 然后返回到前台 组装表头及内容 但是当前系统中easyui版本为1 2 并
  • 【华为OD机试】需要打开多少监控器(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • 海思芯片部署MPP并验证功能

    1 前期准备 1 1搭建好开发环境 1 这里说的是以个人电脑进行开发 安装好虚拟机 在虚拟机中搭建好nfs服务器 确保开发板可以挂载上虚拟机 2 确保开发板和PC可以通过串口通信 1 2熟悉海思芯片的SDK开发包 1 SDK开发包里有mpp
  • 安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用&后台模块&Session&Cookie&Token&身份验证&唯一性

    文章目录 开发环境 数据导入 mysql架构 库表列 数据库操作 mysqli函数 增删改查 数据接收输出 html混编 超全局变量 第三方插件引用 js传参 函数对象调用 身份验证 Cookie使用 身份验证 Session使用 唯一性判
  • 如何提高会员管理系统的使用效率

    在现代商业竞争激烈的环境下 会员管理系统成为许多企业提升用户体验 加强客户关系的关键工具 然而 要充分发挥会员管理系统的作用 提高其使用效率至关重要 本文将探讨如何有效地提升会员管理系统的使用效率 从而实现更好的业务成果 1 精准的系统定位
  • 如何理解区块链的运行原理?

    如何理解区块链的运行原理 上文 我们介绍了区块链的概念 今天就稍微深入一下 尽可能通俗地介绍一下 区块链的运行原理 通过上文的小故事 我们知道了区块链的概念 它的本质就是解决信任问题 降低信任成本的技术方案 目的就是为了去中心化 去信用中介
  • EasyUI Accordion 折叠面板默认不展示

    最近使用easyui做一套后台管理系统 左侧菜单使用的是Accordion折叠面板 需求是打开页面默认不展示子菜单 在网上找了一些博客 大多数都是说把 jquery easyui min js 中第多少行给注释了 我没有找到相应的代码 我使
  • Figma插件开发

    目的 介绍 Figma 插件 figma 插件开发从 0 到 1 分享自己开发的想法 一 Figma 是什么 figma 插件是什么 Figma 初印象 figma 是一个 基于浏览器 的协作式 UI 设计工具 figma 插件初印象 加强
  • 【解决方法】INF file txtsetup.sif is corrupt or missing

    今天帮别人装一个系统 一个上网本 先描述一下环境 上网本 没有光驱 只有一个分区 C 使用UltraISO制作的启动盘 所以 只能用U盘安装 或者说我只会 可是做好了启动盘之后安装确出现上面的问题 解决方法 使用WinSetupFromUS
  • kali下微信的使用dochat(盒装微信)

    一 dochat是什么 DoChat 盒装微信 是docker封装好的微信客户端 WeChat PC Windows Client for Linux 主要解决在linux下使用微信的问题 二 安装方法 官方介绍 GitHub huan d
  • 2023-9-14 石子合并

    题目链接 石子合并 include
  • Alibaba Druid简单介绍及使用

    文章目录 概要 Druid 的主要特点和功能 Druid 的使用 一 添加依赖 二 配置数据源 三 配置 Druid 监控和过滤器 四 启动应用程序 五 访问监控页面 小结 概要 Alibaba Druid 以下简称 Druid 是阿里巴巴
  • ppt to html5 sdk,kinvey-html5-sdk

    Kinvey JavaScript SDK for HTML5 applications Kinvey HTML5 SDK Installation From the command prompt go to your app s root
  • JavaObject类初识

    Java所有的类都继承Object类 Object类中的方法 Object类中的方法一般都需要重写 Sting toString 默认的 toString 返回的是对象的堆内存地址 重写 toString一般用于输出对象的属性 class
  • csdn测试

    测试

随机推荐