日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二、MyBatis常用对象分析 封装工具类

發布時間:2024/7/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二、MyBatis常用对象分析 封装工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.0 MyBatis 對象分析

(1) Resources 類
Resources 類,顧名思義就是資源,用于讀取資源文件。其有很多方法通過加載并解析資源文件,返回不同類型的 IO 流對象。

(2) SqlSessionFactoryBuilder 類
SqlSessionFactory 的 創 建 , 需 要 使 用 SqlSessionFactoryBuilder 對 象 的 build() 方 法 。 由 于SqlSessionFactoryBuilder 對象在創建完工廠對象后,就完成了其歷史使命,即可被銷毀。所以,一般會將該 SqlSessionFactoryBuilder 對象創建為一個方法內的局部對象,方法結束,對象銷毀。

(3) SqlSessionFactory 接口
SqlSessionFactory 接口對象是一個重量級對象(系統開銷大的對象),是線程安全的,所以一個應用只需要一個該對象即可。創建 SqlSession 需要使用 SqlSessionFactory 接口的的 openSession()方法。
? openSession(true):創建一個有自動提交功能的 SqlSession
? openSession(false):創建一個非自動提交功能的 SqlSession,需手動提交
? openSession():同 openSession(false)

(4) SqlSession 接口
SqlSession 接口對象用于執行持久化操作。一個 SqlSession 對應著一次數據庫會話,一次會話以SqlSession 對象的創建開始,以 SqlSession 對象的關閉結束。
SqlSession 接口定義了操作數據的方法 例如 selectOne() ,selectList() ,insert(),update(), delete(), commit(), rollback()
SqlSession 接口對象是線程不安全的,所以每次數據庫會話結束前,需要馬上調用其 close()方法,將其關閉。再次需要會話,再次創建。 SqlSession 在方法內部創建,使用完畢后關閉。

1.1創建工具類,簡化代碼

(1) 創建 MyBatisUtils 類
在zep文件夾下新建utils文件夾,并在utils文件夾下創建MyBatisUtils 工具類

package com.zep.utils;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException; import java.io.InputStream;public class MybatisUtils {private static SqlSessionFactory factory = null;/*靜態代碼塊:執行優先級高于非靜態的初始化塊,它會在類初始化的時候執行一次,執行完成便銷毀*///使用 靜態塊 創建一次 SqlSessionFactorystatic {String config = "mybatis.xml"; //需要和你的項目中的文件名一樣try {//讀取配置文件InputStream in = Resources.getResourceAsStream(config);//創建SqlSessionFactory對象,使用SqlSessionFactoryBuilderfactory = new SqlSessionFactoryBuilder().build(in);} catch (IOException e) {e.printStackTrace();}}// 獲取SqlSession對象的方法public static SqlSession getSqlSession() {SqlSession sqlSession = null;if (factory != null) {sqlSession = factory.openSession(); // 非自動提交事務}return sqlSession;} }

(2) 使用 MyBatisUtil 類
通過MybatisUtils.getSqlSession()直接獲取sqlSession對象
SqlSession sqlSession = MybatisUtils.getSqlSession()

package com.zep;import com.zep.domain.Student; import com.zep.utils.MybatisUtils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException; import java.io.InputStream; import java.util.List;public class MyApp2 {public static void main(String[] args) throws IOException {// 5.【重要】獲取SqlSession對象,從SqlSessionFactory中獲取SqlSessionSqlSession sqlSession = MybatisUtils.getSqlSession();// 6.【重要】指定要執行的sql語句的標識。sql映射文件中的namespace + “.” + 標簽的id值String sqlId = "com.zep.dao.StudentDao"+ "." +"selectStudents";// 7.執行sql語句,通過sqlId找到語句List<Student> studentList = sqlSession.selectList(sqlId);// 8.輸出結果// studentList.forEach(student -> System.out.println(student));for (Student student : studentList) {System.out.println("查詢到的學生=" + student);}// 9.關閉SqlSession對象sqlSession.close();} }

運行結果如下:

總結

以上是生活随笔為你收集整理的二、MyBatis常用对象分析 封装工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。