国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MyBatis理解與掌握(入門例子)

lufficc / 3106人閱讀

摘要:的實例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。下面的示例就是一個確保關(guān)閉的標(biāo)準(zhǔn)模式依賴注入框架可以創(chuàng)建線程安全的基于事務(wù)的和映射器并將它們直接注入到你的中,因此可以直接忽略它們的生命周期。

MyBatis理解與掌握(入門例子)

@(MyBatis)[Java, 框架, MyBatis]

配置文件 mybatis-config.xml





  
    
    
     
      
     
      
        
        
        
        
      
    
  
 
  
    
  
db-config.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=123
maxPoolSize=8
minPoolSize=4  
maxIdleTime=5000
log4j.properties
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
# log4j.logger.命名空間=TRACE   打印sql語句
log4j.logger.TestMapper=TRACE

相關(guān)對象 SqlSessionFactoryBuilder

這個類可以被實例化、使用和丟棄, 一旦創(chuàng)建了 SqlSessionFactory,就不再需要它了
因此 SqlSessionFactoryBuilder 實例的最佳作用域是方法作用域(也就是局部方法變量)。

SqlSessionFactory

一旦被創(chuàng)建就應(yīng)該在 應(yīng)用的運行期間一直存在 ,沒有任何理由對它進(jìn)行清除或重建。
因此 SqlSessionFactory 的__最佳作用域是應(yīng)用作用域__ 。有很多方法可以做到, __最簡單的就是使用單例模式或者靜態(tài)單例模式 __。

public class DBUtil {
  //SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得。
  public static SqlSessionFactory sessionFactory;
  private static String resource = "mybatis-config.xml";
  static {
    try {
      String resource = "mybatis-config.xml";
      InputStream inputStream = Resources.getResourceAsStream(resource);
       sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);      
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public static SqlSession getSession(){
     return sessionFactory.openSession();
  }
}
SqlSession

每個線程都應(yīng)該有它自己的 SqlSession 實例。

SqlSession 的實例__不是線程安全的__ ,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。

絕對不能將 SqlSession 實例的引用放在一個類的靜態(tài)域,甚至一個類的實例變量也不行。 也絕不能將 SqlSession 實例的引用放在任何類型的管理作用域中,比如 Serlvet 架構(gòu)中的 HttpSession。如果你現(xiàn)在正在使用一種 Web 框架,要考慮 SqlSession 放在一個和 HTTP 請求對象相似的作用域中。換句話說,每次收到的 HTTP 請求,就可以打開一個 SqlSession,返回一個響應(yīng),就關(guān)閉它。這個關(guān)閉操作是很重要的,你應(yīng)該把這個關(guān)閉操作放到 finally 塊中以確保每次都能執(zhí)行關(guān)閉。下面的示例就是一個確保 SqlSession 關(guān)閉的標(biāo)準(zhǔn)模式:

SqlSession session = sqlSessionFactory.openSession();
try {
  // do work
} finally {
  session.close();
}

依賴注入框架可以創(chuàng)建線程安全的、基于事務(wù)的 SqlSession 和映射器(mapper)并將它們直接注入到你的 bean 中,因此可以直接忽略它們的生命周期。
如果對如何通過依賴注入框架來使用 MyBatis 感興趣可以研究一下 MyBatis-Spring 或 MyBatis-Guice 兩個子項目。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/77094.html

相關(guān)文章

  • 70 個 Spring 最常見面試題,Java 晉升必會

    摘要:容器自動完成裝載,默認(rèn)的方式是這部分重點在常用模塊的使用以及的底層實現(xiàn)原理。 對于那些想面試高級 Java 崗位的同學(xué)來說,除了算法屬于比較「天方夜譚」的題目外,剩下針對實際工作的題目就屬于真正的本事了,熱門技術(shù)的細(xì)節(jié)和難點成為了主要考察的內(nèi)容。 這里說「天方夜譚」并不是說算法沒用,不切實際,而是想說算法平時其實很少用到,甚至面試官都對自己出的算法題一知半解。 這里總結(jié)打磨了 70 道...

    Ashin 評論0 收藏0
  • MyBatis理解掌握(動態(tài)SQL)

    摘要:理解與掌握動態(tài)框架就是簡單的條件判斷,利用語句我們可以實現(xiàn)某些簡單的條件選擇。有了元素我們就可以動態(tài)的更新那些修改了的字段。 MyBatis理解與掌握(動態(tài)SQL) @(MyBatis)[Java, 框架, MyBatis] if if 就是__簡單的條件判斷 __,利用if語句我們可以實現(xiàn)某些簡單的條件選擇。先來看如下一個例子: select * from user whe...

    blankyao 評論0 收藏0
  • Java深入-框架技巧

    摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實現(xiàn)在軟件開發(fā)中,分散于應(yīng)用中多出的功能被稱為橫切關(guān)注點如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過的點點滴滴,依然清楚的記得當(dāng)初愛情萌芽的模樣…… Java 進(jìn)階面試問題列表 -...

    chengtao1633 評論0 收藏0

發(fā)表評論

0條評論

lufficc

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<