mysql注解批量添加mybatis_Mybatis通过注解方式实现批量插入数据库 及 常见的坑
MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcch/articles/2042298.html,但探讨如何通过注解配置实现同样效果的文章却很少,官方文档上也没找到相关的用法,其中的难点在于如何处理List或者Map类型的参数。不过这种方法终于被我试出来并且测试通过,现以批量插入为例,来演示一下怎样通过注解来实现数据库的批量操作:
/*User.java*/
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*UserDAO.java*/
public interface UserDAO {
@InsertProvider(type = UserDAOProvider.class, method = "insertAll")
void insertAll(@Param("list") List users);
}
1
2
3
4
5
1
2
3
4
5
/*UserDAOProvider.java*/
public class UserDAOProvider {
public String insertAll(Map map) {
List users = (List) map.get("list");
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO User ");
sb.append("(id, name) ");
sb.append("VALUES ");
MessageFormat mf = new MessageFormat("(null, #'{'list[{0}].name})");
for (int i = 0; i < users.size(); i++) {
sb.append(mf.format(new Object[]{i}));
if (i < users.size() - 1) {
sb.append(",");
}
}
return sb.toString();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MyBatis会把UserDAO的insertAll方法中的List类型的参数存入一个Map中, 默认的key是”list”, 可以用@Param注解自定义名称, MyBatis在调用@InsertProvide指定的方法时将此map作为参数传入, 所有代码中使用List users = (List) map.get(“list”);获取list参数.
可以从代码中看出生成的SQL语句大致为:
INSERT INTO User (id, name) VALUES (null, #{list[0].name}), (null, #{list[1].name})[,(null, #{list[i].name})]
其中#{list[0].name}就表示从List参数的取第0个元素的name的值了, “list”跟key是对应的。
http://blog.csdn.net/del_zhu/article/details/52711678
Mybatis常见配置错误总结
classpath:com.axxxxxy/**/dao/mapper/*.xml
spring中的Mybatis的配置
1.classpath是针对src的,classpath后面跟的是路径名称而不是包名。
例如上面,com.axxxxy/**/dao/mapper/*.xml ,com后面应该是‘/’而不是'.',这个错误找了一天才找到。如果你classpath写了classpath*:,那么Mybatis会自动搜索查找子包
2.可以免Mapper接口实现类的,如果不用读写分离,dao接口对象可以直接被注入到Service,可以直接调用对应的Mapper ID
3.Mapper的DAO类的名称和对应XML的mapper文件文件名称应该一致(没试过)
4.最常见的错误有mapper XML文件的namespace,一定要确保数据表的Model路径配置正确了
5.DaoMapper接口中的方法 与 Mapper中的id不匹配,错别字或者 缺失,都是问题。
http://blog.csdn.net/cor_twi/article/details/51228516
mysql注解批量添加mybatis_Mybatis通过注解方式实现批量插入数据库 及 常见的坑相关推荐
- 领英如何批量添加搜索的人脉,批量加领英推荐人脉,批量加精灵推荐人脉,批量加Groups成员,通过链接批量加人
Linkedin平台是一个关系型职业社交平台,每个Linkedin标准账号可添加3万名1度人脉.使用Linkedin的朋友都希望快速多添加好友,扩大自己的人脉圈,增加销售或就业机会. 然而手动添加好友 ...
- mysql注解批量添加mybatis_Mybatis注解方式 实现批量插入数据库
可以使用MyBatis的@InsertProvider注解 实现代码如下: @InsertProvider(type = CyQuestionDetailProvider.class, method ...
- python批量添加qq好友_python实现QQ批量登录功能
本文实例为大家分享了python实现QQ批量登录功能的具体代码,供大家参考,具体内容如下 小编收集整理的第一份代码:python3.6批量登陆QQ import os import time impo ...
- php批量添加图片,php excel给excel批量插入图片
本人最近在药房网采集了3w多数据,结果药品的批准文号是图片格式,结果ocr解析完之后,准确率达不到100%,于是想到把图片插入到excel中,给产品人员人工校对.于是就写了个php程序,切入正题: 1 ...
- Mysql表批量添加字段
在 MySQL 中,可以使用 ALTER TABLE 语句来添加表字段.以下是一些示例代码,可以批量添加多个字段: 1 mysql表批量添加字段 1.1 添加单个字段 ALTER TABLE `tab ...
- android 通讯录 编程,以编程方式批量添加数千个Android联系人
使用ContentResolver.applyBatch和ContentResolver.bulkInsert方法一次性添加数千个联系人非常慢. Android是否提供了批量添加联系人的不同方式,这种 ...
- EF 批量 添加 修改 删除
1批量添加 db.T_Investigator.AddRange(list) 2批量删除 db.T_Investigator.RemoveRange(list) 3批量修改 for 循 ...
- listbox批量添加
int nCount = m_PortList.GetItemCount(); //批量添加待实现 if (m_nBatch >= 1) { //批量添加 int i; for (i=0;i&l ...
- 详细注释版的ABAQUS COH2D4单元批量添加Python脚本
详细注释版的ABAQUS COH2D4单元批量添加Python脚本 ABAQUS Cohesive单元批量添加脚本程序-附详细注释版: #本程序只适用于二维问题,对于三维COH3D8的批量嵌入只需要转 ...
最新文章
- flash h5录音_博乐h5网站建设案例-AI优网络
- 联想笔记本电脑的F1至F12键盘问题。怎么设置才能不按FN就使用F1
- Netbeans6.8使用手札(NetBeans6.8中Java、php、C/C++开发配置)
- 索尼a5100_索尼相机分类,买相机不再发愁
- JavaScript 原型中的哲学思想
- 我开发了一个对.NET程序进行瘦身的工具
- 为普及再助一把力!《2021年中国低代码/无代码市场研究报告》正式发布
- 分布式事务方案这么多,到底应该如何选型?
- 这些Python代码技巧,你肯定还不知道
- 16/32/64位平台下char、short、int、long、指针等类型分别占多少字节,操作系统可以使用的最大内存空间为多大?
- SQL Serevr 2012 安装教程
- CDMA2000中的Walsh码,PN码,短码序列的初相位偏置(PN OFFSET)之間的差別與關係(1)
- 用计算机绘制阀体各零件步骤,机械制图之零件图(四)
- 应该怎么评价大数据杀熟?
- Java中自定义比较器
- python将两个文件合并_python实现两个文件合并功能
- 计算机英文积累(一)
- SAP 固定资产日期
- 20220518编译OpenHarmony-v3.1-Release出现genext2fs: command not found
- php、git、redis函数合集
热门文章
- R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量
- CSDN付费专栏写作感悟及成长之路、兼论学习会员模式的创作者协同效应
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色调色板配置)实战
- R语言使用car包的outlierTest函数通过假设检验的方法检测回归模型中的异常值(outlier)、输出异常值对应的统计量、p值以及Bonferonnii校正p值
- R语言percent函数用百分比表示数值实战
- R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称、将数据写入Excel文件新的表单(sheet)中、将文件保存为xls文件格式(而不是xlsx)
- R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间
- glm.fit Warning Messages in R: algorithm didn’t converge probabilities 0/1
- 1/1+2/1+3/2+4/3+...20/19
- 谭浩强《C++程序设计》学习