发表于: 2017-08-13 00:11:58
1 1047
今天完成的事情: 步骤25-29
把之前的项目和spring整合,现在的项目结构(main是批量添加数据用的)
需要导入的库:spring,mybatis(单另下载mybatis-spring-1.3.1.jar放到里面),junit
解决完代码红叉第一下运行测试报错org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in class path resource,百度解决方法:
在pom.xml中添加
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
后面报错java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;,这是mybatis-spring包版本不对,我把之前从网上项目拷来的1.2.2版本删掉重新下载的1.3.1版本导入。
步骤25,测试一下不关闭连接池的时候,在Main函数里写1000个循环调用会出现什么情况。
使用前面的main类,for循环插入1000条,代码:
public class MyMainTest
{
public static void main(String[] args)
{
// 初始化Spring容器
ApplicationContext applicationContext= new ClassPathXmlApplicationContext("classpath:spring/application-context.xml");
int a = 0;
long startTime = System.currentTimeMillis(); //获取开始时间
for(int i=1;i<=1000;i++)
{ a = i;
// 获得代理对象
UserMapper userMapper = applicationContext.getBean(UserMapper.class);
User user = new User();
user.setName("李小"+i);
user.setQq(00000000+i);
user.settype("前端工程师");
user.settime(20170708);
user.setGraduate_School("北京天天蓝大学天天玩技术学院");
user.setstudent_number(i);
user.setDaily_link("http:www.jnshu.com");
user.sethope("如果我不能在IT特训营拼尽全力,为自己以后的修行路上打好基础,就让我变胖2斤!");
user.setteacher("任我行");
user.setknow_from("知乎");
user.setcreate_at(20170808);
user.setupdate_at(20170808);
userMapper.insertUser(user);
}
long endTime = System.currentTimeMillis(); //获取结束时间
System.out.println("插入"+a+"条数据");
System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); //输出程序运行时间
}
}
结果:
步骤26,测试一下连接DB中断后TryCatch是否能正常处理。
连接DB中断,我就把配置文件数据库密码改成了错的,运行测试,5个方法全都通过,控制台刷出一堆报错,能正常处理。
步骤27,检查一下自己的代码是否符合规范,如果DB的表格有改动,应该改哪些内容,需要多久。
(1)表格增加一列:修改User.java增加一个添加一组getset方法,修改UserMapper.xml增和改都添加一项,修改UserMapperTest.java增和改都添加一项。
(2)表格减少或加减多列:对应(1)增加减少。
(3)表格列名修改:User.java对应修改,UserMapper.xml,UserMapperTest.java的增和改对应修改,如果改变的是查询方法对应条件,UserMapper.xml,UserMapperTest.java的查询额外对应修改。
(4)表名修改:UserMapper.xml里sql语句对应修改。
就写这些吧。。。
步骤28,数据库里插入100万条数据,对比建索引和不建索引的效率查别。再插入3000万条数据,然后是2亿条,别说话,用心去感受数据库的性能。
只做了一次性插入100万条,两次一次28秒一次30秒,3000W就要15分钟了,就没做。
所以现在数据库里有250W+条数据
无索引查询
有索引查询
步骤29,将自己的收获和经验总结,写在日报里,标明是任务小结,写的好的话,可能会被采纳当成任务攻略。
通过任务学会了很多技术,虽然掌握不是很深,但是很实用,比如mysql操作,各种客户端(eclipse,shell,xftp,navicat),配置(mysql,jdk,maven),还有DAO,spring,mybatis。唉,不会写这种总结,就这样吧。
明天计划的事情: 上传链接,任务一收尾,开始任务二
遇到的问题:没啥了。
收获:批量插入数据库。。。。
评论