1. 程式人生 > >Spring 與 myBatis的一種整合方式

Spring 與 myBatis的一種整合方式

採用介面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;
     }
   }