spring与mybatis四种整合方法
转载:
1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数。
(1)Spring配置文件:
- <!-- 引入jdbc配置文件 -->
- <context:property-placeholder location="jdbc.properties"/>
- <!--创建jdbc数据源 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="${driver}"/>
- <property name="url" value="${url}"/>
- <property name="username" value="${username}"/>
- <property name="password" value="${password}"/>
- <property name="initialSize" value="${initialSize}"/>
- <property name="maxActive" value="${maxActive}"/>
- <property name="maxIdle" value="${maxIdle}"/>
- <property name="minIdle" value="${minIdle}"/>
- </bean>
- <!-- 创建SqlSessionFactory,同时指定数据源-->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- </bean>
- <!--创建数据映射器,数据映射器必须为接口-->
- <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
- <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" />
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
- </bean>
- <bean id="userDaoImpl2" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl2">
- <property name="userMapper" ref="userMapper"/>
- </bean>
- public interface UserMapper {
- @Select("SELECT * FROM user WHERE id = #{userId}")
- User getUser(@Param("userId") long id);
- }
- public interface UserDao {
- public User getUserById(User user);
- }
- public class UserDaoImpl2 implements UserDao {
- private UserMapper userMapper;
- public void setUserMapper(UserMapper userMapper) {
- this.userMapper = userMapper;
- }
- public User getUserById(User user) {
- return userMapper.getUser(user.getId());
- }
- }
mybatis中, sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis-
Spring 中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryBean有一个必须属性
dataSource,另外其还有一个通用属性configLocation(用来指定mybatis的xml配置文件路径)。
(1)Spring配置文件:
- <!-- 创建SqlSessionFactory,同时指定数据源-->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <!-- 指定sqlMapConfig总配置文件,订制的environment在spring容器中不在生效-->
- <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
- <!--指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件,mapperLocations和configLocation 有一个即可,当需要为实体类指定别名时,可指定configLocation属性,再在mybatis总配置文件中采用mapper引入实体类映射文件 -->
- <!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
- </bean>
- <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
- <constructor-arg index="0" ref="sqlSessionFactory" />
- </bean>
- <bean id="UserDaoImpl " class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl">
- <!--注入SqlSessionTemplate实例 -->
- <property name="sqlSessionTemplate" ref="sqlSession" />
- -->
- </bean>
- <configuration>
- <typeAliases>
- <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" />
- </typeAliases>
- <mappers>
- <mapper resource="com/xxt/ibatis/dbcp/domain/user.map.xml" />
- </mappers>
- </configuration>
- <mapper namespace="com.xxt.ibatis.dbcp.domain.User">
- <resultMap type="User" id="userMap">
- <id property="id" column="id" />
- <result property="name" column="name" />
- <result property="password" column="password" />
- <result property="createTime" column="createtime" />
- </resultMap>
- <select id="getUser" parameterType="User" resultMap="userMap">
- select * from user where id = #{id}
- </select>
- <mapper/>
- public class UserDaoImpl implements UserDao {
- public SqlSessionTemplate sqlSession;
- public User getUserById(User user) {
- return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);
- }
- public void setSqlSession(SqlSessionTemplate sqlSession) {
- this.sqlSession = sqlSession;
- }
- }
(1)spring配置文件:
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
- <!-- <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/ > -->
- </bean>
- <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
- <constructor-arg index="0" ref="sqlSessionFactory" />
- </bean>
- <bean id="userDaoImpl3" class="com.xxt.ibatis.dbcp.dao.impl.UserDaoImpl3">
- <!--注入SqlSessionTemplate实例 -->
- <property name="sqlSessionTemplate" ref="sqlSession" />
- <!--也可直接注入SqlSessionFactory实例,二者都指定时,SqlSessionFactory失效 -->
- <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
- -->
- </bean>
(2) dao层接口实现类UserDaoImpl3:
- public class UserDaoImpl3 extends SqlSessionDaoSupport implements UserDao {
- public User getUserById(User user) {
- return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user);
- }
- }
- <beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <beans:property name="dataSource" ref="simpleDataSource" />
- <beans:property name="configLocation"
- value="classpath:conf/core/mybatis-config.xml" />
- </beans:bean>
- <beans:bean id="sqlSessionFactory_contact" class="org.mybatis.spring.SqlSessionFactoryBean">
- <beans:property name="dataSource" ref="simpleDataSource_contact" />
- <beans:property name="configLocation"
- value="classpath:conf/core/mybatis-config-contact.xml" />
- </beans:bean>
- <beans:bean id="transactionManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <beans:property name="dataSource" ref="simpleDataSource" />
- </beans:bean>
- <beans:bean id="transactionManager_contact"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <beans:property name="dataSource" ref="simpleDataSource_contact" />
- </beans:bean>
- <!-- <tx:annotation-driven transaction-manager="transactionManager" />
- <tx:annotation-driven transaction-manager="transactionManager_contact" />
- -->
- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
- <property name="mapperInterface" value="com.mybatis.UserDao"></property>
- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
- </bean>
- <bean id="userService" class="com.mybatis.UserServiceImpl">
- <property name="userDao" ref="userDao"></property>
- </bean>
- <!-- 加载配置文件 -->
- <beans:bean name="mapperScannerConfigurer"
- class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <beans:property name="basePackage" value="com.elong.hotel.crm.data.mapper" />
- <beans:property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></beans:property>
- </beans:bean>
- <beans:bean name="mapperScannerConfigurer_contact"
- class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <beans:property name="basePackage"
- value="com.elong.hotel.crm.data.contact.mapper" />
- <beans:property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_contact"></beans:property>
- </beans:bean>
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <!-- name表示以什么开始的方法名,比如 add*表示add开头的方法 propagation表示事务传播属性,不写默认有 -->
- <tx:method name="save*" propagation="REQUIRED" />
- <tx:method name="insert*" propagation="REQUIRED" />
- <tx:method name="add*" propagation="REQUIRED" />
- <tx:method name="del*" />
- <tx:method name="update*" />
- <tx:method name="find*" read-only="true" />
- <tx:method name="get*" read-only="true" />
- <tx:method name="search*" read-only="true" />
- </tx:attributes>
- </tx:advice>
- <tx:advice id="txAdvice_contact" transaction-manager="transactionManager_contact">
- <tx:attributes>
- <!-- name表示以什么开始的方法名,比如 add*表示add开头的方法 propagation表示事务传播属性,不写默认有 -->
- <tx:method name="save*" propagation="REQUIRED" />
- <tx:method name="insert*" propagation="REQUIRED" />
- <tx:method name="add*" propagation="REQUIRED" />
- <tx:method name="del*" />
- <tx:method name="update*" />
- <tx:method name="find*" read-only="true" />
- <tx:method name="get*" read-only="true" />
- <tx:method name="search*" read-only="true" />
- </tx:attributes>
- </tx:advice>
- <!-- 配置事务切面 -->
- <aop:config>
- <aop:pointcut expression="execution(* com.elong.hotel.crm.service..*.*(..))"
- id="pointcut" />
- <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
- <aop:advisor advice-ref="txAdvice_contact" pointcut-ref="pointcut" />
- </aop:config>
spring与mybatis四种整合方法的更多相关文章
- Spring学习笔记:spring与mybatis四种整合方法
1.采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数. (1)Spring配置文件: <!-- 引入jdbc ...
- spring与mybatis三种整合方法
spring与mybatis三种整合方法 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接 http://code.googl ...
- spring与mybatis五种整合方法
1.采用数据映射器(MapperFactoryBean)的方式 不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数. (1)Spring配置文件: <!-- 引入jdbc ...
- Mybatis(六):spring与mybatis三种整合方法
1.采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean. spring-mybatis.xml: <?xml ve ...
- 使用Spring Security3的四种方法概述
使用Spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过, ...
- Spring+SpringMVC+MyBatis+Maven框架整合
本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点 一.Maven需要引入的jar包 二.Spring与SpringMVC的配置分离 三.Sprin ...
- 转:深入浅出spring IOC中四种依赖注入方式
转:https://blog.csdn.net/u010800201/article/details/72674420 深入浅出spring IOC中四种依赖注入方式 PS:前三种是我转载的,第四种是 ...
- 普通java类加入spring容器的四种方式
今天在自己开发的工具类中使用了spring注入的方式调用了其他类,但是发生的报错,在整理了后今天小结一下. 首先简单介绍下spring容器,spring容器是整个spring框架的核心,通常我们说的s ...
- 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. ...
随机推荐
- KKT条件原理
问题引入 max f(x, y) s.t. g(x,y) <= 0 几何解释 a. g(x ,y) <= 0为上图中z = 0平面中的圆,圆的边表示g(x, y) = 0,圆的内部表示g ...
- 20165215 2017-2018-2 《Java程序设计》第7周学习总结
20165215 2017-2018-2 <Java程序设计>第七周学习总结 教材学习内容总结 chapter11 下载安装MySQL服务器 启动MySQL数据库服务器 在bin子目录中, ...
- Web 应用架构基础课(转载)
Web 应用架构基础课 初级 web 应用开发者必学的基础网络架构概念 web 应用主流架构概览 上图便是我司(Storyblocks)网络架构的很好展现.如果你还没成为经验老道的 web 工程师,可 ...
- JavaScript:原生JS实现Facebook实时消息抓捕
基础知识准备: HTML5给我们提供了一个新的对象叫作:MutationObserver.为了兼容,还有WebKitMutationObserver.MozMutationObserver,挂靠在wi ...
- GoldenGate 12.3 MA架构介绍系列(4)–Restful API介绍
OGG 12.3 MA中最大的变化就是使用了restful api,在前面介绍的各个服务模块,其实就是引用restful api开发而来,这些API同时也提供对外的集成接口,详细接口可参考: http ...
- 获取select被选中的option的值
<select id="select"> <option>绥江</option> <option>西江</ ...
- JavaScript快速总结之一
js格式和位置: <!--js内容可以在head中,也可以在body中,不同位置执行顺序会有区别 ,另外也可以单独放到一个js文件中,这样方便维护和修改,而且,可以加快html页面的加载速度.- ...
- JDK源码之HashSet
1.定义 HashSet继承AbstractSet类,实现Set,Cloneable,Serializable接口.Set 接口是一种不包括重复元素的 Collection,它维持它自己的内部排序,所 ...
- mysql用户的增删与密码丢失问题
为root用户设置初始密码 mysqladmin -u root password 密码(单实例) mysqladmin -u root password 密码 -S /data/3306/mysql ...
- java常用代码段整理(持续更新)
FileWriter指定编码格式 FileWriter 默认是用(ISO-8859-1 or US-ASCII)西方编码的,总之不是UTF-8的,而FileWriter类有getEncoding方法, ...