MyBatis(iBATIS) 整合Spring

最近项目中用到Spring整合MyBatis,这里总结一下.

相关参考mybatis-spring-1.0.0-reference-simplified-chinese.pdf(已上传)

说下重点,由于Spring3迟迟没有添加对MyBatis的支持,所以这个是由MyBatis开发的.相关可以参考之前Spring 对iBatis的相关.

1  SqlSessionFactoryBean  是中心,所有操作以它开始.

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

 可知实际上程序中使用的  userMapper是由SqlSessionFactoryBean代理的.所以这里可以放心使用,无需担心事务的相关,这里Spring 都做好了.你不能在Spring管理的SqlSession上调用SqlSession.commit(),SqlSession.rollback()或SqlSession.close()方法。如果这样做了,就会抛出UnsupportedOperationException异常。 

2 事务管理,之前已经分析了,所有事务无法直接通过编程方式处理"无论连接是否设置为自动提交,SqlSession数据方法的执行或在Spring事务之外任意调用映射器方法都将会自动被提交。如果你想编程式地控制事务,请参考Spring手册的10.6章节。这段代码展示了如何手动使用在10.6.2章节描述的PlatformTransactionManager来处理事务。" 

这里PlatformTransactionManager是Spring 里的接口,配制Spring AOP时可以用org.springframework.jdbc.datasource.DataSourceTransactionManager来管理相关事务.配合事务编程.

3 Spring是轻量级框架,对 MyBatis的影响不是很大,其它操作同MyBaits操作没太大区别.

关于MyBatis的使用MyBatis 3 User Guide Simplified Chinese.pdf  是最好的参考资料.

疑难问题集:

1 insert如何获取自动增长列.

useGeneratedKeys

(仅对insert有用)这会告诉MyBatis使用JDBC的getGeneratedKeys方法来取出由数据(比如:像MySQL和SQL Server这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。

insert时通过设置keyProperty可以在指定字段获取自增ID

猜你喜欢

转载自zhouxianglh.iteye.com/blog/1103326