发表于: 2018-01-10 23:15:39
1 616
今日完成:
1. delete from 表名 一条一条删除
truncate table 表名 效率比较高,自增字段恢复从1开始,但是不记录mysql日志
2. 昨日插入数据的时间计算出错,而且王了mvn conpile,导致测试出现问题,今天重新测试插入1000条语句:
不使用连接池,插入1000条记录,需要10s
使用连接池,插入1000条记录,需要4s
3. SqlSession.close()控制是否关闭连接池,在默认dateSource配置下,插入1000条记录
关闭连接池需要4s(同上)
不关闭连接池,默认允许链接数量为10,等很久没有完成。
4. 测试一下连接DB中断后TryCatch是否能正常处理。
修改为错误数据库密码,TryCatch无法正常处理
通过设置断点调试,发现在执行插入语句时会报错
通过查资料得知Mybatis只有在真正执行sql操作的时候才会去获取数据库连接。
.openSession()最终只是返回一个操作数据库的会话、并不包含数据库连接
因此捕捉SQLException异常
但是报错,将异常换成Exception,程序跳过错误执行到最后
因此可以确定在执行插入语句时连接数据库并报错
5. 检查一下自己的代码是否符合规范,如果DB的表格有改动,应该改哪些内容,需要多久。
Mapper代理开发规范:
编写mapper.xml映射文件。
编写mapper接口需要遵循一些开发规范,这样MyBatis可以自动生成mapper接口实现代理对象。
1. 在Mapper中namespace等于mapper接口地址
2. Mapper接口中方法名和Mapper.xml中的statement的id一致
3. Mapper.java接口中方法输入参数类型和Mapper.xml中statement的parameterType指定类型一致。
4. Mapper.java接口中方法的返回值类型和Mapper.xml中的statement的resultType指定的类型一致
Pojo类的成员变量和数据库的column不同,用resultMap映射
以后注意保持一致
如果db表格有改动,需要修改mapper.xml和pojo类
Pojo类增减属性,mapper.xml修改传入传出的参数。
6. select count(*) from 表名; 查看记录数
明日计划:1. 批量插入数据
2. 总结
遇到的问题:
项目总的执行时间太长了,插入数据时间花费4S,但是总时间需要20S,这些时间是消耗在什么上面了
收获:
1. 测试使用连接池的性能优化效果
2. SqlSession使用结束要close()接触占用,放回连接池
3. Mybatis在执行sql语句时才检查数据库连接情况
评论