MyBatis-Spring整合示例
2012-02-10 00:46
519 查看
MyBatis-Spring整合示例
SpringDAOiBATISSQLAOP今日公司新项目计划采用MyBatis与Spring3,网上搜索一圈,发现了MyBatis提供了一个支持Spring3容器的jar包,于是取下用之,大概的写了一个小例子,供大家参考,不足之处,还望指出。web.xml
Java代码
<servlet> <servlet-name>Dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring_config/applicationContext-mvc.xml </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
<servlet> <servlet-name>Dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring_config/applicationContext-mvc.xml </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
Spring配置
Java代码
<!-- 使用SqlSessionFactoryBean工厂产生SqlSessionFactory对象, 方便后期注入Dao --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis_config/Configuration.xml"> </property> </bean> <!-- 会自动将basePackage中配置的包路径下的所有带有@Mapper标注的Dao层的接口生成代理,替代原来我们的Dao实现。--> <bean class="org.mybatis.spring.annotation.MapperScannerPostProcessor"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <property name="basePackage" value="com.demo.dao" /> </bean> <bean name="transactionManager" class="org.springframework.jdbc. datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!--Spring AOP 2.0 的方式配置事务,这个就不用多解释了吧!--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException"/> <tx:method name="find*" propagation="SUPPORTS"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="pc" expression="execution(* *.*.*(..))" /> <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> </aop:config>
<!-- 使用SqlSessionFactoryBean工厂产生SqlSessionFactory对象, 方便后期注入Dao --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis_config/Configuration.xml"> </property> </bean> <!-- 会自动将basePackage中配置的包路径下的所有带有@Mapper标注的Dao层的接口生成代理,替代原来我们的Dao实现。--> <bean class="org.mybatis.spring.annotation.MapperScannerPostProcessor"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <property name="basePackage" value="com.demo.dao" /> </bean> <bean name="transactionManager" class="org.springframework.jdbc. datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!--Spring AOP 2.0 的方式配置事务,这个就不用多解释了吧!--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException"/> <tx:method name="find*" propagation="SUPPORTS"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="pc" expression="execution(* *.*.*(..))" /> <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> </aop:config>
最后看一下我的Dao的接口的写法
Java代码
/** * 这里的@Mapper就是上面所讲的Mapper扫描器中所需要的配置,会自动生成代理对象。 * 注意,接口中的方法名称要和对应的MyBatis映射文件中的语句的id值一样,因为生成的 * 动态代理,会根据这个匹配相应的Sql语句执行。另外就是方法的参数和返回值也需要注 * 意。接口中的方法如何定义,对应的MyBatis映射文件就应该进行相应的定义。 * 最后,标注中的userDao是用来作为Spring的Bean的id(或name)进行使用的,方便我 * 们在Service层进行注入使用。 */ @Mapper("userDao") public interface UserDao { public void insertUser(User user); public void updateUser(User user); public void deleteUser(Long uid); /** * 进行模糊查询 */ public List<User> getAllUser(Map<String,Object> likeCondition); public User getUser(Long uid); }
/** * 这里的@Mapper就是上面所讲的Mapper扫描器中所需要的配置,会自动生成代理对象。 * 注意,接口中的方法名称要和对应的MyBatis映射文件中的语句的id值一样,因为生成的 * 动态代理,会根据这个匹配相应的Sql语句执行。另外就是方法的参数和返回值也需要注 * 意。接口中的方法如何定义,对应的MyBatis映射文件就应该进行相应的定义。 * 最后,标注中的userDao是用来作为Spring的Bean的id(或name)进行使用的,方便我 * 们在Service层进行注入使用。 */ @Mapper("userDao") public interface UserDao { public void insertUser(User user); public void updateUser(User user); public void deleteUser(Long uid); /** * 进行模糊查询 */ public List<User> getAllUser(Map<String,Object> likeCondition); public User getUser(Long uid); }
至此,使用MyBatis-Spring包的基本配置就结束了。
有什么表述不清的地方还望大家指出,如有需要更多信息,请留言,谢谢!
更新:上传相关工程附件,具体演示使用方法。。。。。。。。。
12年1月30日上传DEMO示例,附件中的bigdt.rar
一级相关jar包,附件中的other.zip和spring_iBATIS.zip
5
顶1
踩分享到:
2010-11-18 12:22:53
浏览 4775
评论(8)
收藏
分类:企业架构
相关推荐
评论8 楼 c__06 2011-12-26 引用把整个工程放上来!7 楼 qq308560726 2011-07-15 引用不能跑啊大大在在大八222222222222222226 楼 zhouxianglh 2011-06-22 引用
就算不配AOP,UserDao 也会被事务管理,AOP配了,也不能管理事务.如何才能上AOP来管理事务呢?5 楼 wq611403 2011-05-05 引用有相应的LIB吗4 楼 Rong_it 2011-01-21 引用SQL mapper 不同 如果里面映射的SQL 对应标签ID重复 必须用到namespace namespace怎么加到映射中啊?3 楼 yanxunjian 2010-12-09 引用怎么没有 LIB 呢?2 楼 lunzuo 2010-12-08 引用有代码没 我配置后 dao 空指针啊1 楼 yaogaoyu 2010-12-03 引用能更详细一点吗?比如ibatis的配置文件,映射文件,映射类等。。
相关文章推荐
- ZK(7.0.1)+Spring(2.3.2)+MyBatis(2.3.2)整合的简单示例
- MyBatis+Spring整合示例
- 整合 spring 4(包括mvc、context、orm) + mybatis 3 示例
- 整合 spring 4(包括mvc、context、orm) + mybatis 3 示例
- 整合 spring 4(包括mvc、context、orm) + mybatis 3 示例
- MyBatis + Spring 整合示例代码
- MyBatis+Spring整合示例
- Spring-Mybatis整合注意的问题以及完整代码示例(见评论)
- 【SSM】SpringMVC、Spring(5.0.3)、MyBatis(3.4.5)三大框架的整合项目入门示例
- mybatis与spring3.1整合的四种方式 (附示例)
- MyBatis+Spring整合示例
- SpringBoot整合Mybatis示例
- Spring MVC + Mybatis + Spring - 整合示例1:查询所有的客户信息
- spring+springMVC+mybatis整合示例(基于XML配置文件)
- 整合 spring 4(包括mvc、context、orm) + mybatis 3 示例
- Spring学习总结(六)——Spring整合MyBatis完整示例
- springBoot与MyBatis整合示例
- springmvc+mybatis 整合 完整示例
- Mybatis --- Spring整合示例
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)