发表于: 2017-12-22 14:43:49
1 710
今天完成的事情:
1、学习三种JDBC批量插入编程方法的比较
方法一,使用PreparedStatement加批量的方法
方法二 使用Statement加批量的方法
conn.setAutoCommit(false);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
for(int x = 0; x < size; x++){
stmt.addBatch("INSERT INTO adlogs(ip,website,yyyymmdd,hour,object_id) VALUES('192.168.1.3', 'localhost','20081009',8,'23123')");
}
stmt.executeBatch();
conn.commit();
方法三:直接使用Statement
conn.setAutoCommit(false);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
for(int x = 0; x < size; x++){
stmt.execute("INSERT INTO adlogs(ip,website,yyyymmdd,hour,object_id) VALUES('192.168.1.3', 'localhost','20081009',8,'23123')");
}
conn.commit();
使用上述方法分别插入10万条数据的平均测试时间为:
方法一:17.844s
方法二:18.421s
方法三:16.359s
可以看出JDBC的batch语句插入不但没有性能提升,反而比没有用batch的时候要慢,当然这可能跟JDBC具体驱动的实现方法有关。
2、在Spring中整合mybatis,除了需要引入spring相关jar包和mybatis核心jar包以外,还需要引入mybatis整合到spring的jar包
在applicationContext.xml中的配置文件中,我感觉自己的配置文件没有层次,学的东西很乱,看到一个配置文件从上倒下,有明确的先后顺序,能帮助理解。
明天计划的事情:
请假回家练车,带上书在家学习,网上看看师兄的日报,星期天来做“买一台服务器,阿里云或者是金山云都可以。部署数据库到远程DB,从本地直接连远程。”
遇到的问题:
1、mybatis is not known to the MapperRegistry.
使用mybatis的时候,遇到了这个问题,大概的意思是com.mybatis.mapper.UserMapper这个接口没有被注册所以找不到。一开始没有认真的翻译错误原因。。。所以搞了很久发现无论是测试代码还是mapper.xml文件都没有问题,最后仔细看了下bug的原因,才发现的全局配置文件的问题,需要把mapper.xml注册到全局配置文件的<mappers>中。
映射器(mappers)
2、怎样给数据库插入10000条记录
在mysql里查询编辑器里输入sql语句执行,在师兄的任务中看到了一个单独的测试类用于测试百万条数据数据插入,对 其中String prefix 不懂 ,百度翻译知道是字符串的前缀 ,在String类中常用方法http://blog.csdn.net/u012768347/article/details/61479240
boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。还可以指定开始检测位置下标- boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
substring是截取字符串方法。截取字符串,长度从index+1开始,到fileName.length()-1结束,左闭右开。
substring(begin,end)begin表示开始截取的索引;end表示结束截取的索引。
3、You can change this value on the server by setting the max_allowed_packet' variable.Packet for query is too large (30300108 > 4194304)。
您可以更改此值在服务器上设置max_allowed_packet的变量。
Data truncation: Out of range value for column 'create_at' at row 1
字段的值超过其可输入的范围了,就像int(10),但是导入的数据中有超出范围的,可以把字段的类型改一下,比如改成bigint(50)等等。 然后就成功了。
收 获:
1、使用注解方式完成注入对象时因为要使用注解方式注入对象,所以要先通知一下spring:
在applicationContext文件中添加一句话,
<context:mybatis-config/>
<!--扫描包进行注入-->
<context:component-scan base-package="com.jnshu.dao" />
2、回头看看任务1,总感觉自己知识点没有完全掌握,近期敲例子敲到心态爆炸,跑不通,也不会改,总想着结合自己的数据库跑通一个例子,改着改着就不知道错到哪里了,练车也当做是缓缓吧,总结一下学习的方法,现在感觉自己效率贼低,一天一天的百度百度的就没了,例子何其多,跑不通有错误的一大把。而当自己在控制台看到不报红有输出时就感觉很开心,禅道里的任务一后面几步现在不敢点完成,等我有点底气再完成吧。
禅道 :http://task.ptteng.com/zentao/project-task-498-unclosed.html
评论