最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對(duì)象DAO模式的方法

 更新時(shí)間:2016年06月01日 17:37:27   作者:fhd001  
Data Access Object數(shù)據(jù)訪問對(duì)象模式在Java操作數(shù)據(jù)庫部分的程序設(shè)計(jì)中經(jīng)常被使用到,這里我們就來看一下Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對(duì)象DAO模式的方法:

SqlSessionTemplate
SqlSessionTemplate是MyBatis-Spring的核心。這個(gè)類負(fù)責(zé)管理MyBatis的SqlSession,調(diào)用MyBatis的SQL方法,翻譯異常。SqlSessionTemplate是線程安全的,可以被多個(gè)DAO所共享使用。
當(dāng)調(diào)用SQL方法時(shí),包含從映射器getMapper()方法返回的方法,SqlSessionTemplate將會(huì)保證使用的SqlSession是和當(dāng)前Spring的事務(wù)相關(guān)的。此外,它管理session的生命周期,包含必要的關(guān)閉,提交或回滾操作。
SqlSessionTemplate實(shí)現(xiàn)了SqlSession,這就是說要對(duì)MyBatis的SqlSession進(jìn)行簡易替換。
SqlSessionTemplate通常是被用來替代默認(rèn)的MyBatis實(shí)現(xiàn)的DefaultSqlSession,因?yàn)樗荒軈⑴c到Spring的事務(wù)中也不能被注入,因?yàn)樗蔷€程不安全的。相同應(yīng)用程序中兩個(gè)類之間的轉(zhuǎn)換可能會(huì)引起數(shù)據(jù)一致性的問題。
SqlSessionTemplate對(duì)象可以使用SqlSessionFactory作為構(gòu)造方法的參數(shù)來創(chuàng)建。

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
  <constructor-arg index="0" ref="sqlSessionFactory"/> 
</bean> 

這個(gè)bean現(xiàn)在可以直接注入到DAO bean中。你需要在bean中添加一個(gè)SqlSession屬性,就像下面的代碼:

public class UserDaoImpl implements UserDao{ 
  private SqlSession sqlSession; 
  public void setSqlSession(SqlSession sqlSession){ 
    this.sqlSession = sqlSession; 
  } 
  public User getuser(String userId){ 
    return (User)sqlSession.selectOne 
    ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); 
  } 
} 

如下注入SqlSessionTemplate:

<bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl"> 
  <property name="sqlSession" ref="sqlSession"/> 
</bean> 

SqlSessionDaoSupport
SqlSessionDaoSupport是一個(gè)抽象的支持類,用來為你提供SqlSession。調(diào)用getSqlSession()方法你會(huì)得到一個(gè)SqlSessionTemplate,這然后可以用于執(zhí)行SQL方法,就像下面這樣:

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{ 
  public User getUser(String userId){ 
    return (User)getSqlSession().selectOne 
      ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); 
  } 
} 

通常MapperFactoryBean是這個(gè)類的首選,因?yàn)樗恍枰~外的代碼。但是,如果你需要在DAO中做其它非MyBatis的工作或需要具體的類,那么這個(gè)類就是很有用了。SqlSessionDaoSupport需要一個(gè)sqlSessionFactory或sqlSessionTemplate屬性來設(shè)置。這些被明確地設(shè)置或由Spring來自動(dòng)裝配。如果兩者都被設(shè)置了,那么sqlSessionFactory是被忽略的。
假設(shè)類UserMapperImpl是SqlSessionDaoSupport的子類,它可以在Spring中進(jìn)行如下的配置:

<bean id="userMapper" class="org.mybatis.spring.sample.mapper.UserMapperImpl"> 
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 
</bean> 

 

相關(guān)文章

  • SpringBoot基于Redis實(shí)現(xiàn)token的在線續(xù)期的實(shí)踐

    SpringBoot基于Redis實(shí)現(xiàn)token的在線續(xù)期的實(shí)踐

    本文主要介紹了使用Redis實(shí)現(xiàn)JWT令牌在線續(xù)期的方案,通過在線續(xù)期token,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • JAVA中的注解機(jī)制解讀

    JAVA中的注解機(jī)制解讀

    這篇文章主要介紹了JAVA中的注解機(jī)制解讀,通過調(diào)用Java的反射機(jī)制相關(guān)API來訪問annotation信息,首先加載使用注解的類,得到class類,然后再得到類相應(yīng)的方法,成員變量,需要的朋友可以參考下
    2023-10-10
  • springboot項(xiàng)目idea熱部署的教程詳解

    springboot項(xiàng)目idea熱部署的教程詳解

    這篇文章主要介紹了springboot項(xiàng)目idea熱部署,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot導(dǎo)入mail依賴報(bào)錯(cuò)問題解決

    SpringBoot導(dǎo)入mail依賴報(bào)錯(cuò)問題解決

    這篇文章主要介紹了SpringBoot導(dǎo)入mail依賴報(bào)錯(cuò)問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java如何根據(jù)HttpServletRequest獲取IP地址

    java如何根據(jù)HttpServletRequest獲取IP地址

    文章介紹了幾種代理服務(wù)器轉(zhuǎn)發(fā)服務(wù)請(qǐng)求頭的方法,這些請(qǐng)求頭可能包含真實(shí)IP地址,但并不是所有的代理都會(huì)包括這些請(qǐng)求頭,而且這些IP地址可能被偽造
    2025-03-03
  • MyBatis使用級(jí)聯(lián)操作解決lombok構(gòu)造方法識(shí)別失敗問題

    MyBatis使用級(jí)聯(lián)操作解決lombok構(gòu)造方法識(shí)別失敗問題

    這篇文章主要介紹了MyBatis使用級(jí)聯(lián)操作解決lombok構(gòu)造方法識(shí)別失敗問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 使用Java和ffmpeg把音頻和視頻合成視頻的操作方法

    使用Java和ffmpeg把音頻和視頻合成視頻的操作方法

    這篇文章主要介紹了使用Java和ffmpeg把音頻和視頻合成視頻,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • JMeter導(dǎo)入自定義的Jar包的詳解教程

    JMeter導(dǎo)入自定義的Jar包的詳解教程

    這篇文章主要介紹了JMeter導(dǎo)入自定義的Jar包的詳解教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java sm3加密算法的實(shí)現(xiàn)

    Java sm3加密算法的實(shí)現(xiàn)

    這篇文章主要介紹了Java sm3加密算法的實(shí)現(xiàn),幫助大家更好的利用Java進(jìn)行加密,感興趣的朋友可以了解下
    2020-10-10
  • Java Vector類詳解及實(shí)例代碼

    Java Vector類詳解及實(shí)例代碼

    這篇文章主要介紹了Java Vector類詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評(píng)論

石门县| 明溪县| 巴塘县| 黄骅市| 平武县| 和田县| 平昌县| 岚皋县| 定日县| 肇源县| 花莲市| 南充市| 大兴区| 南和县| 泰顺县| 团风县| 洪湖市| 杭锦后旗| 巴塘县| 苏尼特左旗| 平武县| 贵溪市| 军事| 巴塘县| 罗平县| 大同县| 阳西县| 司法| 宜昌市| 东港市| 甘德县| 通江县| 武陟县| 筠连县| 上蔡县| 绵阳市| 福安市| 宜宾市| 达尔| 绍兴市| 双柏县|