Spring與Mybatis的整合方法有哪些
本文主要介紹Spring與Mybatis三種常用整合方法,需要的整合架包是mybatis-spring.jar,可通過(guò)鏈接
http://code.google.com/p/mybatis/下載到。
1、采用數(shù)據(jù)映射器(MapperFactoryBean)的方式,不用寫(xiě)mybatis映射文件,采用注解方式提供相應(yīng)的sql語(yǔ)句和輸入?yún)?shù)。
(1)Spring配置文件:
<!-- 引入jdbc配置文件 --> <context:property-placeholder location="jdbc.properties"/> <!--創(chuàng)建jdbc數(shù)據(jù)源 --> <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> <!-- 創(chuàng)建SqlSessionFactory,同時(shí)指定數(shù)據(jù)源--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> </bean> <!--創(chuàng)建數(shù)據(jù)映射器,數(shù)據(jù)映射器必須為接口--> <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>
(2)數(shù)據(jù)映射器UserMapper,代碼如下:
public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") User getUser(@Param("userId") long id); }
(3)dao接口類(lèi)UserDao,代碼如下:
public interface UserDao { public User getUserById(User user); }
(4)dao實(shí)現(xiàn)類(lèi)UserDaoImpl2,,代碼如下:
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()); } }
2、采用接口org.apache.ibatis.session.SqlSession的實(shí)現(xiàn)類(lèi)org.mybatis.spring.SqlSessionTemplate。
mybatis中, sessionFactory可由SqlSessionFactoryBuilder.來(lái)創(chuàng)建。
MyBatis-Spring 中,使用了SqlSessionFactoryBean來(lái)替代。
SqlSessionFactoryBean有一個(gè)必須屬性dataSource,另外其還有一個(gè)通用屬性configLocation(用來(lái)指定mybatis的xml配置文件路徑)。
(1)Spring配置文件:
<!-- 創(chuàng)建SqlSessionFactory,同時(shí)指定數(shù)據(jù)源-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 指定sqlMapConfig總配置文件,訂制的environment在spring容器中不在生效-->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--指定實(shí)體類(lèi)映射文件,可以指定同時(shí)指定某一包以及子包下面的所有配置文件,mapperLocations和configLocation有一個(gè)即可,當(dāng)需要為實(shí)體類(lèi)指定別名時(shí),可指定configLocation屬性,再在mybatis總配置文件中采用mapper引入實(shí)體類(lèi)映射文件 -->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> -->
<bean>
(2)mybatis總配置文件sqlMapConfig.xml:
<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>
(3)實(shí)體類(lèi)映射文件user.map.xml:
<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/>
(4)dao層接口實(shí)現(xiàn)類(lèi)UserDaoImpl:
Java代碼
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; } }
3、采用抽象類(lèi)org.mybatis.spring.support.SqlSessionDaoSupport提供SqlSession。
(1)spring配置文件:
Java代碼
<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實(shí)例 --> <property name="sqlSessionTemplate" ref="sqlSession" /> <!--也可直接注入SqlSessionFactory實(shí)例,二者都指定時(shí),SqlSessionFactory失效 --> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>
(2) dao層接口實(shí)現(xiàn)類(lèi)UserDaoImpl3:
Java代碼
public class UserDaoImpl3 extends SqlSessionDaoSupport implements UserDao { public User getUserById(User user) { return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user); } }
相關(guān)文章
Java實(shí)現(xiàn)的上傳并壓縮圖片功能【可等比例壓縮或原尺寸壓縮】
這篇文章主要介紹了Java實(shí)現(xiàn)的上傳并壓縮圖片功能,可實(shí)現(xiàn)圖片的等比例壓縮或原尺寸壓縮,涉及java文件讀寫(xiě)、轉(zhuǎn)換、傳輸?shù)认嚓P(guān)操作技巧,需要的朋友可以參考下2018-07-07解決Spring JPA 使用@transaction注解時(shí)產(chǎn)生CGLIB代理沖突問(wèn)題
這篇文章主要介紹了解決Spring JPA 使用@transaction注解時(shí)產(chǎn)生CGLIB代理沖突問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08出現(xiàn)次數(shù)超過(guò)一半(50%)的數(shù)
給出n個(gè)數(shù),需要我們找出出現(xiàn)次數(shù)超過(guò)一半的數(shù),下面小編給大家分享下我的實(shí)現(xiàn)思路及關(guān)鍵代碼,感興趣的朋友一起學(xué)習(xí)吧2016-07-07使用java的milo框架訪問(wèn)OPCUA服務(wù)的過(guò)程
這篇文章主要介紹了使用java的milo框架訪問(wèn)OPCUA服務(wù)的方法,本次采用KEPServerEX5模擬服務(wù)端,使用milo開(kāi)發(fā)的程序作為客戶(hù)端,具體操作使用過(guò)程跟隨小編一起看看吧2022-01-01MyBatis?Generator生成的$?sql是否存在注入風(fēng)險(xiǎn)詳解
這篇文章主要介紹了MyBatis?Generator生成的$?sql是否存在注入風(fēng)險(xiǎn)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java設(shè)計(jì)模式之責(zé)任鏈模式簡(jiǎn)介
這篇文章主要介紹了Java設(shè)計(jì)模式之責(zé)任鏈模式,需要的朋友可以參考下2014-07-07通過(guò)java備份恢復(fù)mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了如何通過(guò)java備份恢復(fù)mysql數(shù)據(jù)庫(kù),其實(shí)一般情況下通過(guò)bat或sh就可以,這里主要是介紹了java的實(shí)現(xiàn)思路,喜歡的朋友可以參考下2013-09-09Spring IOC 能降低耦合的問(wèn)題分析及解決方法
這篇文章主要介紹了Spring IOC 為什么能降低耦合,依賴(lài)注入是調(diào)用者僅通過(guò)聲明某個(gè)組件就可以獲得組件的控制權(quán),而對(duì)該組件的依賴(lài)關(guān)系管理、查找、加載由外部完成,需要的朋友可以參考下2022-06-06