Spring 與 myBatis的一種整合方式
阿新 • • 發佈:2019-02-04
採用介面org.apache.ibatis.session.SqlSession的實現類org.mybatis.spring.SqlSessionTemplate。
mybatis中, sessionFactory可由SqlSessionFactoryBuilder.來建立。MyBatis-Spring 中,使用了SqlSessionFactoryBean來替代。SqlSessionFactoryBean有一個必須屬性dataSource,另外其還有一個通用屬性configLocation(用來指定mybatis的xml配置檔案路徑)。
Spring配置檔案 <!--配置ibatis的資料來源 --> <!-- 建立SqlSessionFactory,同時指定資料來源--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 指定sqlMapConfig總配置檔案,訂製的environment在spring容器中不在生效--> <property name="configLocation" value="/WEB-INF/config/mybatis/mybatis-config.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> 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> 實體類對映檔案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/> dao層介面實現類UserDaoImpl: 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; } }