亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何整合iBatis和Spring

發布時間:2021-07-15 09:34:57 來源:億速云 閱讀:173 作者:chen 欄目:編程語言

本篇內容主要講解“如何整合iBatis和Spring”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何整合iBatis和Spring”吧!

Spring通過DAO模式,提供了對iBATIS的良好支持。SqlMapClient對象是iBATIS中的主要對象,我們可以通過配置讓spring來管理SqlMapClient對象的創建,繼而整合iBatis和Spring。

與hibernate類似,Spring 提供了SqlMapClientDaoSupport對象,我們的DAO可以繼承這個類,通過它所提供的SqlMapClientTemplate對象來操縱數據庫。看起來這些概念都與hibernate類似。

通過SqlMapClientTemplate來操縱數據庫的CRUD是沒有問題的,這里面關鍵的問題是事務處理。Spring提供了強大的聲明式事務處理的功能,我們已經清楚hibernate中如何配置聲明式的事務,那么在iBATIS中如何獲得聲明式事務的能力呢?我們又怎樣整合iBatis和Spring呢?

***,我們需要了解的是spring通過AOP來攔截方法的調用,從而在這些方法上面添加聲明式事務處理的能力。典型配置如下:applicationContext-common.xml

<!-- 配置事務特性 -->      <tx:advice id="txAdvice" transaction-manager="事務管理器名稱">          <tx:attributes>             <tx:method name="add*" propagation="REQUIRED"/>             <tx:method name="del*" propagation="REQUIRED"/>             <tx:method name="update*" propagation="REQUIRED"/>             <tx:method name="*" read-only="true"/>         </tx:attributes>      </tx:advice>             <!-- 配置哪些類的方法需要進行事務管理 -->      <aop:config>         <aop:pointcut id="allManagerMethod" expression="execution(* com.ibatis.manager.*.*(..))"/>         <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>      </aop:config>

這些事務都是聲明在業務邏輯層的對象上的。 第二,我們需要一個事務管理器,對事務進行管理,實現整合iBatis和Spring的第二步。

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">     <property name="dataSource" ref="dataSource"/>     </bean>     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>         <property name="url" value="jdbc:mysql://127.0.0.1/ibatis"/>         <property name="username" value="root"/>         <property name="password" value="mysql"/>     </bean>

此后,我們需要讓spring來管理SqlMapClient對象,實現整合iBatis和Spring的第三步

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">        <property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property>     </bean>

我們的sqlMapConfig.xml就可以簡寫為:

<?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE sqlMapConfig             PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"             "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  <sqlMapConfig>      <settings           lazyLoadingEnabled="true"          useStatementNamespaces="true" />      <!-- 使用spring之后,數據源的配置移植到了spring上,所以iBATIS本身的配置可以取消 -->    <sqlMap resource="com/ibatis/dao/impl/ibatis/User.xml"/>  </sqlMapConfig>  User.xml:如下   <?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE sqlMap             PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"             "http://ibatis.apache.org/dtd/sql-map-2.dtd">  <sqlMap namespace="User">   <!-- Use type aliases to avoid typing the full classname every time. -->   <typeAlias alias="User" type="com.ibatis.User"/>   <!-- Select with no parameters using the result map for Account class. -->   <select id="selectAllUsers" resultClass="User">      select * from t_user    </select>       <select id="selectUser" resultClass="User" parameterClass="int">    select * from t_user where id=#id#    </select>       <insert id="insertUser" parameterClass="User">    insert into t_user values (          null,#username#,#password#     )    </insert>       <update id="updateUser" parameterClass="User">    update t_user set username = #username#,password=#password#     where id=#id#     </update>       <delete id="deleteUser" parameterClass="int">    delete from t_user where id=#id#    </delete>  </sqlMap>

我們的DAO的編寫:

package com.iabtis.dao.impl.ibatis;   import java.util.List;   import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;   import com.ibatis.dao.UserDAO;   import com.ibatis.crm.model.User;   public class UserDAOImpl extends SqlMapClientDaoSupport implements UserDAO {       public void select(User user) {                 getSqlMapClientTemplate().delete("selectUser ",user.getId());          }      public List findAll() {                 return getSqlMapClientTemplate().queryForList("selectAllUsers ");          }          public void delete(User user) {                 getSqlMapClientTemplate().delete("deleteUser ",user.getId());          }          public void save(User user) {                 getSqlMapClientTemplate().insert("insertUser ",user);          }          public void update(User user) {                 getSqlMapClientTemplate().update("updateUser ",user);          }   }

繼承SqlMapClientDaoSupport,要求我們注入SqlMapClient對象,因此,需要有如下的DAO配置,這是整合iBatis和Spring的***一步了

<bean id="userDAO" class="com.ibatils.dao.impl.ibatis.UserDAOImpl">       <property name=”sqlMapClient” ref=”sqlMapClient”/>  </bean>

這就是所有需要注意的問題了,此后就可以在業務邏輯層調用DAO對象了!

到此,相信大家對“如何整合iBatis和Spring”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆子县| 同德县| 彭山县| 锡林郭勒盟| 化州市| 丰城市| 繁峙县| 乌鲁木齐县| 弥勒县| 洛宁县| 江孜县| 新乡县| 民丰县| 文水县| 赣州市| 江口县| 临猗县| 温州市| 尤溪县| 长丰县| 海盐县| 平湖市| 龙泉市| 鄂托克前旗| 肥城市| 沐川县| 永川市| 永定县| 嘉兴市| 金塔县| 米易县| 南澳县| 万安县| 渭源县| 洞口县| 正镶白旗| 黔西| 德钦县| 靖江市| 临沧市| 繁峙县|