转载:

1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数。
  (1)Spring配置文件:

  1. <!-- 引入jdbc配置文件 -->
  2. <context:property-placeholder location="jdbc.properties"/>
  3. <!--创建jdbc数据源 -->
  4. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  5. <property name="driverClassName" value="${driver}"/>
  6. <property name="url" value="${url}"/>
  7. <property name="username" value="${username}"/>
  8. <property name="password" value="${password}"/>
  9. <property name="initialSize" value="${initialSize}"/>
  10. <property name="maxActive" value="${maxActive}"/>
  11. <property name="maxIdle" value="${maxIdle}"/>
  12. <property name="minIdle" value="${minIdle}"/>
  13. </bean>
  14. <!-- 创建SqlSessionFactory,同时指定数据源-->
  15. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  16. <property name="dataSource" ref="dataSource" />
  17. </bean>
  18. <!--创建数据映射器,数据映射器必须为接口-->
  19. <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
  20. <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" />
  21. <property name="sqlSessionFactory" ref="sqlSessionFactory" />
  22. </bean>
  23. <bean id="userDaoImpl2" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2">
  24. <property name="userMapper" ref="userMapper"/>
  25. </bean>
 
(2)数据映射器UserMapper,代码如下:
  1. public interface UserMapper {
  2. @Select("SELECT * FROM user WHERE id = #{userId}")
  3. User getUser(@Param("userId") long id);
  4. }
 (3) dao接口类UserDao,代码如下:
  1. public interface UserDao {
  2. public User getUserById(User user);
  3. }
(4)dao实现类UserDaoImpl2,,代码如下:
  1. public class UserDaoImpl2 implements UserDao {
  2. private UserMapper userMapper;
  3. public void setUserMapper(UserMapper userMapper) {
  4. this.userMapper = userMapper;
  5. }
  6. public User getUserById(User user) {
  7. return userMapper.getUser(user.getId());
  8. }
  9. }
 2、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate
    mybatis中, sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis-
Spring 中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryBean有一个必须属性
dataSource,另外其还有一个通用属性configLocation(用来指定mybatis的xml配置文件路径)。
   (1)Spring配置文件:

  1. <!-- 创建SqlSessionFactory,同时指定数据源-->
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  3. <property name="dataSource" ref="dataSource" />
  4. <!-- 指定sqlMapConfig总配置文件,订制的environment在spring容器中不在生效-->
  5. <property  name="configLocation"  value="classpath:sqlMapConfig.xml"/>
  6. <!--指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件,mapperLocations和configLocation 有一个即可,当需要为实体类指定别名时,可指定configLocation属性,再在mybatis总配置文件中采用mapper引入实体类映射文件 -->
  7. <!- - <property  name="mapperLocations"  value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/>  -->
  8. </bean>
  9. <bean id="sqlSession"     class="org.mybatis.spring.SqlSessionTemplate">
  10. <constructor-arg index="0" ref="sqlSessionFactory" />
  11. </bean>
  12. <bean id="UserDaoImpl " class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl">
  13. <!--注入SqlSessionTemplate实例 -->
  14. <property name="sqlSessionTemplate" ref="sqlSession" />
  15. -->
  16. </bean>
    (2)mybatis总配置文件sqlMapConfig.xml:

  1. <configuration>
  2. <typeAliases>
  3. <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" />
  4. </typeAliases>
  5. <mappers>
  6. <mapper resource="com/xxt/ibatis/dbcp/domain/user.map.xml" />
  7. </mappers>
  8. </configuration>
(3)实体类映射文件user.map.xml:
  1. <mapper namespace="com.xxt.ibatis.dbcp.domain.User">
  2. <resultMap type="User" id="userMap">
  3. <id property="id" column="id" />
  4. <result property="name" column="name" />
  5. <result property="password" column="password" />
  6. <result property="createTime" column="createtime" />
  7. </resultMap>
  8. <select id="getUser" parameterType="User" resultMap="userMap">
  9. select * from user where id = #{id}
  10. </select>
  11. <mapper/>
(4)dao层接口实现类UserDaoImpl:
  1. public class UserDaoImpl implements  UserDao  {
  2. public SqlSessionTemplate sqlSession;
  3. public User getUserById(User user) {
  4. return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);
  5. }
  6. public void setSqlSession(SqlSessionTemplate sqlSession) {
  7. this.sqlSession = sqlSession;
  8. }
  9. }
 3、采用抽象类org.mybatis.spring.support.SqlSessionDaoSupport提供SqlSession。
   (1)spring配置文件:
  1. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  2. <property name="dataSource" ref="dataSource" />
  3. <property  name="configLocation"  value="classpath:sqlMapConfig.xml"/>
  4. <!-- <property  name="mapperLocations"  value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/   >  -->
  5. </bean>
  6. <bean id="sqlSession"     class="org.mybatis.spring.SqlSessionTemplate">
  7. <constructor-arg index="0" ref="sqlSessionFactory" />
  8. </bean>
  9. <bean id="userDaoImpl3" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3">
  10. <!--注入SqlSessionTemplate实例 -->
  11. <property name="sqlSessionTemplate" ref="sqlSession" />
  12. <!--也可直接注入SqlSessionFactory实例,二者都指定时,SqlSessionFactory失效 -->
  13. <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
  14. -->
  15. </bean>

(2) dao层接口实现类UserDaoImpl3:

  1. public class UserDaoImpl3 extends SqlSessionDaoSupport implements UserDao {
  2. public User getUserById(User user) {
  3. return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);
  4. }
  5. }
 4、采用org.mybatis.spring.mapper.MapperFactoryBean或者org.mybatis.spring.mapper.MapperScannerConfigurer
    1. <beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    2. <beans:property name="dataSource" ref="simpleDataSource" />
    3. <beans:property name="configLocation"
    4. value="classpath:conf/core/mybatis-config.xml" />
    5. </beans:bean>
    6. <beans:bean id="sqlSessionFactory_contact" class="org.mybatis.spring.SqlSessionFactoryBean">
    7. <beans:property name="dataSource" ref="simpleDataSource_contact" />
    8. <beans:property name="configLocation"
    9. value="classpath:conf/core/mybatis-config-contact.xml" />
    10. </beans:bean>
    11. <beans:bean id="transactionManager"
    12. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    13. <beans:property name="dataSource" ref="simpleDataSource" />
    14. </beans:bean>
    15. <beans:bean id="transactionManager_contact"
    16. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    17. <beans:property name="dataSource" ref="simpleDataSource_contact" />
    18. </beans:bean>
    19. <!--  <tx:annotation-driven transaction-manager="transactionManager" />
    20. <tx:annotation-driven transaction-manager="transactionManager_contact" />
    21. -->
    22. <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
    23. <property name="mapperInterface" value="com.mybatis.UserDao"></property>
    24. <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    25. </bean>
    26. <bean id="userService" class="com.mybatis.UserServiceImpl">
    27. <property name="userDao" ref="userDao"></property>
    28. </bean>
    29. <!-- 加载配置文件 -->
    30. <beans:bean name="mapperScannerConfigurer"
    31. class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    32. <beans:property name="basePackage" value="com.elong.hotel.crm.data.mapper" />
    33. <beans:property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></beans:property>
    34. </beans:bean>
    35. <beans:bean name="mapperScannerConfigurer_contact"
    36. class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    37. <beans:property name="basePackage"
    38. value="com.elong.hotel.crm.data.contact.mapper" />
    39. <beans:property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_contact"></beans:property>
    40. </beans:bean>
    41. <tx:advice id="txAdvice" transaction-manager="transactionManager">
    42. <tx:attributes>
    43. <!-- name表示以什么开始的方法名,比如 add*表示add开头的方法 propagation表示事务传播属性,不写默认有 -->
    44. <tx:method name="save*" propagation="REQUIRED" />
    45. <tx:method name="insert*" propagation="REQUIRED" />
    46. <tx:method name="add*" propagation="REQUIRED" />
    47. <tx:method name="del*" />
    48. <tx:method name="update*" />
    49. <tx:method name="find*" read-only="true" />
    50. <tx:method name="get*" read-only="true" />
    51. <tx:method name="search*" read-only="true" />
    52. </tx:attributes>
    53. </tx:advice>
    54. <tx:advice id="txAdvice_contact" transaction-manager="transactionManager_contact">
    55. <tx:attributes>
    56. <!-- name表示以什么开始的方法名,比如 add*表示add开头的方法 propagation表示事务传播属性,不写默认有 -->
    57. <tx:method name="save*" propagation="REQUIRED" />
    58. <tx:method name="insert*" propagation="REQUIRED" />
    59. <tx:method name="add*" propagation="REQUIRED" />
    60. <tx:method name="del*" />
    61. <tx:method name="update*" />
    62. <tx:method name="find*" read-only="true" />
    63. <tx:method name="get*" read-only="true" />
    64. <tx:method name="search*" read-only="true" />
    65. </tx:attributes>
    66. </tx:advice>
    67. <!-- 配置事务切面 -->
    68. <aop:config>
    69. <aop:pointcut expression="execution(* com.elong.hotel.crm.service..*.*(..))"
    70. id="pointcut" />
    71. <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
    72. <aop:advisor advice-ref="txAdvice_contact" pointcut-ref="pointcut" />
    73. </aop:config>

spring与mybatis四种整合方法的更多相关文章

  1. Spring学习笔记:spring与mybatis四种整合方法

    1.采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数.  (1)Spring配置文件: <!-- 引入jdbc ...

  2. spring与mybatis三种整合方法

    spring与mybatis三种整合方法 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接 http://code.googl ...

  3. spring与mybatis五种整合方法

    1.采用数据映射器(MapperFactoryBean)的方式 不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数.  (1)Spring配置文件: <!-- 引入jdbc ...

  4. Mybatis(六):spring与mybatis三种整合方法

    1.采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean. spring-mybatis.xml: <?xml ve ...

  5. 使用Spring Security3的四种方法概述

    使用Spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过, ...

  6. Spring+SpringMVC+MyBatis+Maven框架整合

    本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点 一.Maven需要引入的jar包 二.Spring与SpringMVC的配置分离 三.Sprin ...

  7. 转:深入浅出spring IOC中四种依赖注入方式

    转:https://blog.csdn.net/u010800201/article/details/72674420 深入浅出spring IOC中四种依赖注入方式 PS:前三种是我转载的,第四种是 ...

  8. 普通java类加入spring容器的四种方式

    今天在自己开发的工具类中使用了spring注入的方式调用了其他类,但是发生的报错,在整理了后今天小结一下. 首先简单介绍下spring容器,spring容器是整个spring框架的核心,通常我们说的s ...

  9. idea spring+springmvc+mybatis环境配置整合详解

    idea spring+springmvc+mybatis环境配置整合详解 1.配置整合前所需准备的环境: 1.1:jdk1.8 1.2:idea2017.1.5 1.3:Maven 3.5.2 2. ...

随机推荐

  1. OpenCV-3.3.0测试

    安装包目录下/samples/cpp里是各种例程 其中example_cmake里CMakeLists.txt已写好,直接cmake,make就可以,example.cpp是一个调用笔记本摄像头并显示 ...

  2. xml 的 <![CDATA["URL"]]>

    <![CDATA["URL"]]>:用于 xml 处理特殊字符,比如:& <PolicyURL><![CDATA[ http://ectp.t ...

  3. orb slam2 双目摄像头

    主要参考了http://blog.csdn.net/awww797877/article/details/51171099这篇文章,其中需要添加的是:export ROS_PACKAGE_PATH=$ ...

  4. ClassOne__HomeWork

    1,static类型 static类型定义有两类,一类是静态数据,另一类是静态函数. 静态数据跟成员变量不同,它可以通过类名直接访问,而不需要通过定义对象来访问.它的的生成也和成员变量不一样,它只生成 ...

  5. MySQL存储引擎MyISAM与InnoDB区别总结整理

    在MySQL的 可重复读隔离级别 中,是解决了幻读的读问题的. 1. MySQL默认存储引擎的变迁 在MySQL 5.5之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默 ...

  6. Linux基础命令---ifconfig

    ifconfig ifconfig指令用来配置网络接口参数,同时还可以显示当前内核网络接口的工作状态.如果没有提供参数,则ifconfig将显示当前活动接口的状态.如果给定单个接口参数,则只显示给定接 ...

  7. 35 个最好用的 Vue 开源库

    35 个最好用的 Vue 开源库 Vue.js 是一个非常易用的渐进式 JavaScript 框架,用于构建用户界面. 1.Vue Dark Mode Vue.js 的一个极简主义的深色设计系统.它提 ...

  8. NodeJS,JavaScript正在吞噬这个世界

    NodeJS,JavaScript正在吞噬这个世界 NodeJS,一个基于Google Chrome V8 JS引擎的服务器端JavaScript运行时,曾经被认识只是一个赶时髦的技术,有谁会想到,它 ...

  9. Lonsdor K518ISE free update news on what makes and year can work

    Lonsdor K518ISE engineers recently tested a number of cars and verified working great, below are tes ...

  10. pyenv安装

    petalinux-config出错 以为是pyenv的问题,后发现不是,把pyenv的安装卸载总结如下: 折腾了半天发觉是安装了pyenv导致的python版本混乱,卸载后问题解决了.(卸载过程见h ...