首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

mybatis3的批量安插

2012-09-28 
mybatis3的批量插入最近遇见了一个需要批量插入的操作,没办法只好又来看看了哟,话说好久都没认真研究过技

mybatis3的批量插入
最近遇见了一个需要批量插入的操作,没办法只好又来看看了哟,话说好久都没认真研究过技术方面的东西了。由于spring3.0.5还没有集成mybatis3,所以只能使用mybatis官方自带的与spring3集成的jar包,叫mybatis-spring-1.0.0.jar。记得以前以前看过在spring+ibatis2时的批量插入代码,大概样式如下:

public class SqlSessionTemplateDaoSupport extends DaoSupport {private SqlSessionTemplate sqlSession;@Autowired(required = false)public final void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {if (!this.externalSqlSession) {this.sqlSession = new SqlSessionTemplate(sqlSessionFactory);}}public final SqlSession getBatchSqlSession() {return new SqlSessionTemplate(this.sqlSession.getSqlSessionFactory(),ExecutorType.BATCH);//return sqlSession.getSqlSessionFactory().openSession(executorType, false);}...


可以看到新实现的SqlSessionTemplateDaoSupport类只是将返回类弄sqlSession的类型改成了SqlSessionTemplate,通过构造方法可以看出其实它本来就是SqlSessionTemplate类型的。需要注意的是上面构造sqlSession时是通过SqlSessionTemplate(this.sqlSession.getSqlSessionFactory(),ExecutorType.BATCH);来创建的,而不通过sqlSession.getSqlSessionFactory().openSession(executorType, false)来创建的。如果通过后者来创建需要手动来提交事务,即手动sqlSession.commit()。
而通过SqlSessionTemplate则不需要,因为SqlSessionTemplate中sqlSession的执行是需要通过SqlSessionInterceptor拦截的,这个动态拦截器会在执行方法后自己执行sqlSession.commit()方法。

热点排行