Mybits+Oracle+List集合(封装Map)批量存储

Mybits+Oracle+List集合(封装Map)批量存储


1、处理数据(返回的数据是文本,无JSON及加密封装),要存储的是文本数据,有回车切分的一行行数据(读大文本数据存储亦如此)

订单号,类型,原始,折扣金金额,优惠金额,币种,交易时间,......
8671592 ,1,1,0,1 ,0,CNY,2017-09
6935632 ,1,1,0,1 ,0,CNY,2017-09
4633946 ,1,1,0,1 ,0,CNY,2017-09
9672181 ,1,1,0,1 ,0,CNY,2017-09
.....

大量这样的数据,需要存储到数据库。

2、处理数据(格式化,使数据符合一定格式)

1、
//用回车键切分返回文本,变成一行一行的数组
String result1[]=Str.split("\\r?\\n");
2、用List封装Map
List<Map<String,String>> list =new ArrayList<Map<String,String>>();
//取每条数据信息,存入数据库
for (int i = 1; i < result1.length; i++) {
Map m1=new HashMap();
list=java.util.Arrays.asList(result1[i]);
//去每一行的每个数据
String arrayList[] = result1[i].split(",");
for (int j = 0; j < arrayList.length; j++) {
m1.put("paramater"+j, arrayList[j].trim());
}
转成一个map:
{paramater6=CNY, paramater3=0, paramater4=1, paramater1=1, paramater2=1, paramater0=8671592}
//可以取得一个map的所有的value
/*list1=java.util.Arrays.asList(m1.values().toString());*/
//把Map放到List集合中
list.add(m1);
}

3、//此时的List中的数据形式
list封装map:
[{paramater7=2017-09-07 09:39:14, paramater12=55, paramater8=55, paramater2=1, paramater0=44}, 
{paramater9=880002686,  paramater12=55, paramater4=1, paramater1=1, paramater2=1, paramater0=44}, 
.....
]
4、//开始准备存储数据
try {
cacheUtilService.save(list);
} catch (Exception e) {


3、mybatis-spring批量操作
@Override
public void save(List list) throws Exception {
serviceI.batchSave("MenberMapper.insertlist", list);
}
mybatis-spring-1.2.2.jar提供批量操作
//批量服务
@Resource(name = "sqlSessionTemplate")
private SqlSessionTemplate sqlSessionTemplate;
/**
* 批量新增
* @param str
* @param obj
*/
public Object batchSave(String str, List objs )throws Exception{
return sqlSessionTemplate.insert(str, objs);
}

4、mybatis中xml的sql,数据库字段的定义一定要与提供字符串的顺序一致

<insert id="insertlist" parameterType="java.util.List">
insert into hyb_core.table(
orderno,
tradetype,
originalmoney
....
)
(
<foreach collection="list" item="item" index="index"
separator="union all">
select
#{item.paramater0,jdbcType=VARCHAR},
#{item.paramater1,jdbcType=VARCHAR},
#{item.paramater2,jdbcType=VARCHAR},
......
} from dual
</foreach>
)
</insert>


5、数据存放list中,前一条总是被后一条覆盖的问题


在这里把放到list的Map,如果把Map m1=new HashMap();放到for外面,只实例化一次,操作Map的引用只有唯一一个地址,后面的数据每次访问都会覆盖前面的值。

for (int i = 1; i < result1.length; i++) {
Map m1=new HashMap();
 


在list.add(m1);操作的始终是唯一的map引用,所以list里面的值,无论多少都是最后一条数据。


每天努力一点,每天都在进步。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring MVC是一个基于Java的框架,用于开发Web应用程序。它的优点是简化了开发过程,提供了灵活的配置和组织结构,以及强大的功能,如容易实现URL路由,请求处理和响应等。它遵循MVC(模型-视图-控制器)设计模式,将应用程序的不同层分离开来,从而提高了代码的可维护性和可测试性。 MyBatis是一个开源的持久层框架,它提供了将Java对象与关系数据库之间的映射的工具。与传统的ORM框架不同,MyBatis不依赖于JPA注解,而是通过XML或注解配置文件来描述对象数据库的映射关系。它提供了丰富的SQL映射语言,使开发者能够更好地控制和优化SQL语句的执行。 Oracle是一个流行的关系数据库管理系统(RDBMS),它提供了可靠和高效的数据存储和管理解决方案。它支持强大的事务处理功能,并提供了广泛的SQL功能,如创建和管理表、索引、视图、存储过程等。Oracle与Spring MVC和MyBatis的集成可以通过Spring的数据访问对象(DAO)层来实现,从而实现与数据库的交互。 Spring MVC和MyBatis与Oracle的集成可以通过配置数据源、定义数据访问对象和使用事务管理器等来实现。这种集成方式可以使开发者更轻松地编写和管理数据库相关的代码,同时提供了良好的扩展性和维护性。通过将Spring MVC、MyBatis和Oracle的优势结合在一起,开发者可以更高效地开发和维护高性能和可靠的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

powerfuler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值