91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何整合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

资阳市| 乌鲁木齐市| 耿马| 仁化县| 西吉县| 大同县| 海盐县| 翁牛特旗| 唐山市| 姚安县| 沭阳县| 饶阳县| 辰溪县| 洛浦县| 阿尔山市| 盐津县| 金华市| 南澳县| 施甸县| 繁峙县| 乌拉特中旗| 澎湖县| 西青区| 伊金霍洛旗| 大足县| 平昌县| 普兰县| 九龙县| 个旧市| 得荣县| 南部县| 偃师市| 灵璧县| 历史| 古浪县| 德阳市| 全椒县| 荣昌县| 襄樊市| 乾安县| 毕节市|