MyBatis核心接口和类
三大對象:
1、SqlSessionFactoryBuilder:負責構建SqlSessionFactory,并且提供了多個build()方法的重載
2、SqlSessionFactory:創建SqlSession實例的工廠
3、SqlSession:用于執行持久化操作的對象
?
三大對象獲取的步驟:
(1)每個MyBatis的應用程序都以一個SqlSessionFactory對象的實例為核心。
(2)首先獲取SqlSessionFactoryBuilder對象,可以根據XML配置文件的實例構建該對象。
(3)然后獲取SqlSessionFactory對象,該對象實例可以通過SqlSessionFactoryBuilder對象來獲得。
(4)有了SqlSessionFactory對象之后,通過SqlSessionFactory對象的openSession()方法就可以獲取SqlSession實例,SqlSession對象中完全包含以數據庫為背景的所有執行SQL操作的方法。
?
三大對象的聲明周期和作用域:
《1》SqlSessionFactoryBuilder的最大特點是:用過即丟。一旦創建了SqlSessionFactoryBuilder對象之后,這個類就不再需要存在了,因此SqlSessionFactoryBuilder的最佳范圍是存在方法體內,也就是局部變量而已。
《2》SqlSessionFactory對象一旦創建,就會在整個應用運行過程中始終存在,因此SqlSessionFactory的最佳作用域是Application(單例模式)。
《3》SqlSession對應著一次數據庫回話。在每次訪問數據庫時都需要創建它,每個線程都有自己的SqlSession實例,SqlSession實例不能被共享,也不是線程安全的。因此最佳的作用域范圍是request作用域或者方法體作用域內。
?
?
package com.ssm.utils;import java.io.IOException; import java.io.InputStream;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /*** MyBatis的核心接口和類* @author Administrator**/ public class MyBatisUtil {private static SqlSessionFactory factory;/** 在靜態代碼塊下,factory只會被創建一次*/static{try {String resource="mybatis-config.xml";InputStream is=Resources.getResourceAsStream(resource);factory=new SqlSessionFactoryBuilder().build(is);} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}/*** 創建SqlSession對象* @return*/public static SqlSession createSession(){return factory.openSession(false);//true為自動提交事務,true為默認值 }/*** 關閉SqlSession對象* @param session*/public static void closeSession(SqlSession session){if (session!=null) {session.close();}} }?
package com.ssm.test;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.ssm.entity.Address; import com.ssm.entity.User; import com.ssm.mapper.UserMapper; import com.ssm.utils.MyBatisUtil;public class TestUser {public static void main(String[] args) {SqlSession session=null;List<User> userList;/*** 查詢所有user的集合*/try {session=MyBatisUtil.createSession();userList = session.getMapper(UserMapper.class).getUserList();for (User user : userList) {System.out.println("userid:"+user.getId()+"\tuserName:"+user.getUserName());}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}finally{MyBatisUtil.closeSession(session);}} }?
轉載于:https://www.cnblogs.com/chopper-zx/p/7866907.html
總結
以上是生活随笔為你收集整理的MyBatis核心接口和类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: testng使用DataProvider
- 下一篇: bzoj3631: [JLOI2014]