欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis與Spring中的SqlSession詳解

 更新時間:2024年05月25日 17:16:30   作者:你知道“鐵甲小寶”嗎丶  
在MyBatis中,你可以使用SqlSessionFactory來創(chuàng)建SqlSession,使用MyBatis-Spring之后,你不再需要直接使用SqlSessionFactory了,接下來通過示例代碼講解MyBatis與Spring中的SqlSession,需要的朋友可以參考下

前言

在 MyBatis 中,你可以使用 SqlSessionFactory 來創(chuàng)建 SqlSession。 一旦你獲得一個 session 之后,你可以使用它來執(zhí)行映射了的語句,提交或回滾連接,最后,當不再需要它的時候,你可以關閉 session。 使用 MyBatis-Spring 之后,你不再需要直接使用 SqlSessionFactory 了,因為你的 bean 可以被注入一個線程安全的 SqlSession,它能基于 Spring 的事務配置來自動提交、回滾、關閉 session。

一、SqlSessionTemplate

1. 創(chuàng)建

SqlSessionTemplate 是 MyBatis-Spring 的核心。作為 SqlSession 的一個實現,這意味著可以使用它無縫代替你代碼中已經在使用的 SqlSession。 SqlSessionTemplate 是線程安全的,可以被多個 DAO 或映射器所共享使用。
當調用 SQL 方法時(包括由 getMapper() 方法返回的映射器中的方法),SqlSessionTemplate 將會保證使用的 SqlSession 與當前 Spring 的事務相關。 此外,它管理 session 的生命周期,包含必要的關閉、提交或回滾操作。另外,它也負責將 MyBatis 的異常翻譯成 Spring 中的 DataAccessExceptions。
由于模板可以參與到 Spring 的事務管理中,并且由于其是線程安全的,可以供多個映射器類使用,你應該總是用 SqlSessionTemplate 來替換 MyBatis 默認的 DefaultSqlSession 實現。在同一應用程序中的不同類之間混雜使用可能會引起數據一致性的問題。
可以使用 SqlSessionFactory 作為構造方法的參數來創(chuàng)建 SqlSessionTemplate 對象。

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
  <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
@Configuration
public class MyBatisConfig {
  @Bean
  public SqlSessionTemplate sqlSession() throws Exception {
    return new SqlSessionTemplate(sqlSessionFactory());
  }
}

2. 使用

Autowired
SqlSessionTemplate sqlSessionTemplate;

3. 批量操作

3.1 創(chuàng)建SqlSessionTemplate

@Bean
public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) throws Exception {
    return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH);
}

3.2 service

@Autowired
SqlSession sqlSession;
public void insertUsers(List<User> users) {
    for (User user : users) {
        sqlSession.getMapper(UserMapper.class).insert(user);
    }
}

3.3 controller

@RequestMapping("003")
public void mybatis003() {
    List<User> users=new ArrayList<>();
    for(int i=10;i<20;i++){
        users.add(new User(i));
    }
    userService.insertUsers(users);
}

二、SqlSessionDaoSupport

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

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

在這個類里面,通常更傾向于使用 MapperFactoryBean,因為它不需要額外的代碼。但是,如果你需要在 DAO 中做其它非 MyBatis 的工作或需要一個非抽象的實現類,那么這個類就很有用了。

SqlSessionDaoSupport 需要通過屬性設置一個 sqlSessionFactory 或 SqlSessionTemplate。如果兩個屬性都被設置了,那么 SqlSessionFactory 將被忽略。

假設類 UserMapperImpl 是 SqlSessionDaoSupport 的子類,可以編寫如下的 Spring 配置來執(zhí)行設置:

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

總結

到此這篇關于MyBatis與Spring中的SqlSession的文章就介紹到這了,更多相關MyBatis Spring中SqlSession內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spark內存調優(yōu)指南

    Spark內存調優(yōu)指南

    這篇文章主要為大家介紹了Spark內存調優(yōu)指南數據序列化分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • java求余的技巧匯總

    java求余的技巧匯總

    這篇文章主要給大家介紹了關于java求余技巧的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • java理論基礎Stream API終端操作示例解析

    java理論基礎Stream API終端操作示例解析

    這篇文章主要為大家介紹了java理論基礎Stream API終端操作示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • SpringBoot集成Validation參數校驗

    SpringBoot集成Validation參數校驗

    這篇文章主要為大家詳細介紹了SpringBoot集成Validation參數校驗,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 教你安裝eclipse2021并配置內網maven中心倉庫的圖文詳解

    教你安裝eclipse2021并配置內網maven中心倉庫的圖文詳解

    本文能通過圖文并茂的形式給大家介紹安裝eclipse2021并配置內網maven中心倉庫的相關知識,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • Log4j詳細使用教程_動力節(jié)點Java學院整理

    Log4j詳細使用教程_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了Log4j的使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • java如何更改數據庫中的數據

    java如何更改數據庫中的數據

    這篇文章主要介紹了java如何更改數據庫中的數據,修改數據庫是數據庫操作必不可少的一部分,使用Statement接口中的excuteUpdate()方法可以修改數據表中的數據,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Java實現的zip工具類完整實例

    Java實現的zip工具類完整實例

    這篇文章主要介紹了Java實現的zip工具類,結合完整實例形式分析了Java針對zip文件指定路徑壓縮、遞歸壓縮等相關操作技巧,需要的朋友可以參考下
    2018-12-12
  • SSM使用mybatis分頁插件pagehepler實現分頁示例

    SSM使用mybatis分頁插件pagehepler實現分頁示例

    本篇文章主要介紹了SSM使用mybatis分頁插件pagehepler實現分頁示例,使用分頁插件的原因,簡化了sql代碼的寫法,實現較好的物理分頁,非常具有實用價值,需要的朋友可以參考下
    2018-03-03
  • EVCache緩存在Spring Boot中的實戰(zhàn)示例

    EVCache緩存在Spring Boot中的實戰(zhàn)示例

    這篇文章主要介紹了EVCache緩存在Spring Boot中的實戰(zhàn)示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論