Mybatis篇總結

本文是對慕課網上"搞定SSM開發"路徑的系列課程的總結,詳細的項目文檔和課程總結放在github上了.點擊查看java

JDBC寫法

//sql:
String sql = "select * from user";
//加載驅動:
Class.forName("com.mysql.jdbc.Driver");
//根據參數建立鏈接
Connection conn = DriverManager.getConnection(url,username,password);
//建立PreparedStatement
PreparedStatement statement = conn.prepareStatement(sql);
//執行sql,並使用resultSet接收結果
ResultSet rs =  statement.executeQuery();
//將rs裏的全部值取出來
try{
while(rs.next()){
    String ... = rs.getString(1)/rs.getString("userName");       //從結果中根據列名或者列的序號取值.
}
}catch(SqlException ex){

    }finally{
        //必需要手動釋放鏈接
        conn.close();
    }
//

以上便是一個簡單的jdbc查詢數據庫的寫法.
有什麼問題呢?
第一是sql的寫法,若是sql過長,參數過多,拼接起來很麻煩,不直觀,而且sql很難查看;
第二是Connectione的建立和銷燬須要手動控制,而這些應該是業務無關代碼.mysql

Mybatis主要概念

ORM框架是一種數據操做的框架,常見的好比JDBC,Hibernate,固然,Mybatis也是其中的一種.
相比於JDBC,Mybatis的優點在於能將Sql集中配置;而且能和Spring集成;將connection交給Spring託管,不須要開發者本身操做;同時也能方便進行AOP的開發.
而和hibernate對比,Mybatis則比較容易學,沒有hibernate那麼高的門檻.git

如何配置Mybatis

1.配置Mybatis的配置文件Configuration.xml
 
2. 讀取xml,建立sqlsession
//經過配置文件獲取數據庫鏈接信息
        Reader reader = Resources.getResourceAsReader("com/chentao/MicroMessage/config/mybatis-config.xml");
        
        //經過配置信息構建一個SqlSessionFactory
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        
        //經過sqlsessionfactory打開session
        SqlSession sqlSession = sessionFactory.openSession();
        
        return sqlSession;
3.配置與Sql相關的XML文件
3.1 定義namespace       --namespace定義了xml文件的域,和mybatis接口相匹配,也是爲了標誌在xml文件中定義的屬性等
3.2 定義resultMap,用來簡單接受返回對象(固然也能夠不用定義,返回時)mybatis使用約定來返回對象)
3.3 在xml中定義sql,經過id對應方法名稱,在java中調用
4.在Configuration.xml中將第三步配置的文件經過mapper屬性引入文內存中讀取
5.在Java中使用接口來調用sql寫就的業務
4.關於代碼中參數的使用,能夠傳入一個map,能夠傳入對象,也能夠傳入多個對象,在(須要接口中經過註解定義在sql中使用的參數名)
5.關於一對多配置的使用:
5.1 在resultMap中引入其餘的resultMap
5.2 在sql中使用join這樣的方式能夠查出一對多的對象,
5.3 若是在返回結果中字段名稱相同,則須要使用As指定別名,並在resultMap的屬性中體現出來.

概念深刻了解(增強版)

接口式編程

經過namespace的包名和相應接口的包名與類名進行匹配,能夠經過調用接口的方法直接使用sql的邏輯.
mybatis實現這一特性的方法是動態代理.github

分頁:

根據每頁的條數,和須要查詢的頁數能夠加載整個頁面的數據;
簡單邏輯是從數據庫拿到總條數,而後計算出總頁數,而後經過數據查詢出第n到m條數據,使用limit關鍵字(mysql中)便可以拿到須要查詢的數據.sql

Mybatis攔截器

實現:

1:實現mybatis的Inteceptor接口
在實現類上使用註解:Intercepts來定義須要攔截哪一種類型的方法.
實現plugin方法和intercept方法;數據庫

2:在plugin中根據註解和傳進來的對象肯定是否攔截該對象.編程

3:在intercept方法中肯定是否攔截對應方法,並拿到其中參數,包括sql,增長本身的邏輯.session

4:在intercept方法中,使用invocaiton.proceed來調用原來的邏輯.mybatis

經過攔截器實現分頁是比較常見的場景.app

相關文章
相關標籤/搜索