发表于: 2018-04-08 22:41:35

2 678


今天完成的事情

1.直接执行Main方法去在服务器上跑通流程

其实就是把单元测试修改一下写成方法然后Main方法里执行

url的地址改成服务器的公网地址

2.继续插数据库

1.发现mybatis的数据库插入跟jdbc还是有区别的

mybatis的执行器有三种类型

ExecutorType.SIMPLE

这个类型不做特殊的事情它只为每个语句创建一个PreparedStatement。

ExecutorType.REUSE

这种类型将重复使用PreparedStatements。

ExecutorType.BATCH

这个类型批量更新且必要地区别开其中的select 语句确保动作易于理解

在使用ExecutorType.BATCH 后开启批量插入效率得到提升(1000条提高30

SqlSession sqlSession = this.sqlSessionFactory.openSession(ExecutorType.BATCH,false);

然后找到师兄提示的mysql批量操作要加rewriteBatchedStatements参数这里还要确保5.1.13以上版本的驱动才能实现

例如


jdbc.url=jdbc:mysql://47.95.246.67:3306/myku?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true


mybatis上添加后在次提升(100030秒左右的效率

 

然后看到mybatis的动态SQLforeach标签批量插入

在实验的时候出现 3字节的UTF-8序列的字节2无效的错误

foreach的主要用在构建in条件中它可以在SQL语句中进行迭代一个集合

foreach标签属性

collection:指定要遍历的集合:  

list类型的参数会特殊处理封装在map,mapkey就叫list  

item:将当前遍历出的元素赋值给指定的变量  

separator:每个元素之间的分隔符  

open:遍历出所有结果拼接一个开始的字符  

close:遍历出所有结果拼接一个结束的字符  

index:索引遍历list的时候是index就是索引,item就是当前值  

遍历map的时候index表示的就是mapkey,item就是map的值  

#{变量名}就能取出变量的值也就是当前遍历出的元素  

明天计划的事情

1.数据库

遇到的问题

1.在使用foreach时出现如下报错

2.批处理时是否必须开启事务还有就是我在JDBC代码的url上加入rewriteBatchedStatements=true,但是效率没有得到提升附上代码

收获



返回列表 返回列表
评论

    分享到