1、如何使用mybatis的链接池
2、使用mybatis往数据库中插入千万条数据,效率特别低。10W条就耗时一个多小时。
for(int i = 0; i < 10000000; i++){
currentAlarmServiceImpl.insertCurrentAlarm(currentAlarm);
}
直接调用DAO层,单个插入的接口,循环一千万次。
每次都要开启事务,提交事务等。特别耗时,是否可以考虑,以一万为单位来提交事务,每次都一万一万的提交。
3、总结一下
mybatis中常用的标签
//动态sql中
<sql></sql>
<select></select>
<insert></insert>
<update></update>
<delete></delete>
<foreach collection="", item="", index="", seporate=","></foreach>
<where>
<if>
</if>
</where>
<set>
<test=""></test>
<test=""></test>
</set>
4、插入的数据中,有些需要实现jdbcType 和 javaType之间的转换。
java对象有其自己的数据类型,数据库有数据库的数据类型,在插入数据的时候,如何将java对象的数据类型转成数据库的数据类型。从数据库中查询出数据时,如何将数据库的类型转成java对象的类型。 这个过程是需要关注的。
在mybatis中定义了一个TypeHandler接口的类型处理器。通过实现此接
口,可以实现java类型和数据库类型之间的互相转换。
5、如何高效的分页查询。
6、升级过程发现的问题:
表数据在升级前进行备份,升级过程中,先删除表,升级后,重新创建表,并且导入备份的数据。此时数据库的主键会失效。直接插入数据,会抛出主键重复的异常。因为恢复备份的数据后,主键为1的记录已经存在,但是由于主键失效,插入数据的时候,数据库给数据主键赋值是1,但是表中已经存在键值为1的记录,所以会抛出异常。这时候解决方案是,在向升级后的表插入数据之前,重新设置表的主键,从数据库中查询出当前最大主键是多少,并且对表重新设置一下。 这样就可以了。
//先从升级后的表中查询出主键的最大id,然后设置表的主键从最大id+1开始,这样就可以正常添加新的记录了。
alter table check_t1 auto_increment= max(id);
需要研究的地方。自己写一个数据备份和恢复的脚本。
7、mybatis中的延迟加载,如何配置。
8、一级缓存、二级缓存区别和作用。
9、使用mybatis如何级联查询
10、在Spring-mybatis中如何配置Spring的事务。
11、使用动态代理,对try/catch方法进行去重,拦截Service中的类。