// 1、讀取配置文件 /** * 讀取配置文件的方式 * 1、絕對路徑:從磁碟位置讀取配置文件,如:F:/mybatis/mybatis-config.xml,缺點可能別的機器沒有F盤 * 2、相對路徑:相對路徑從項目的src目錄下開始,如:src/main/mybatis.xml,缺點:如果項目 ...
// 1、讀取配置文件
/**
* 讀取配置文件的方式
* 1、絕對路徑:從磁碟位置讀取配置文件,如:F:/mybatis/mybatis-config.xml,缺點可能別的機器沒有F盤
* 2、相對路徑:相對路徑從項目的src目錄下開始,如:src/main/mybatis.xml,缺點:如果項目是web工程,一旦部署src目錄消失
* 3、使用類載入器(推薦):只能讀取類路徑下的配置文件
* 4、使用ServletContext對象的getRealPath(推薦):能得到當前應用部署的絕對路徑
*/
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// 2、創建SqlSessionFactory工廠
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
/**
* 創建工廠使用了構建者模式:builder.build(in);
* 優勢:將對象的創建細節隱藏,使使用者直接調用該方法獲取對象
*/
SqlSessionFactory sqlSessionFactory = builder.build(in);
// 3、使用工廠生產SqlSession對象
/**
* 生產sqlSession使用了工廠模式:sqlSessionFactory.openSession()
* 通過工廠模式創建對象的好處:解決了硬編碼問題,
* 直接創建對象的缺點,會降低代碼的靈活程度,當需要創建別的對象時,這需要進入代碼中進行修改;
* 優勢:解耦(降低類之間的依賴關係)
*/
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4、使用SQLSession創建Dao介面的代理對象
/**
* 創建mapper實現類使用了代理模式:sqlSession.getMapper(UserDao.class);
* 優勢:不修改源碼的基礎上對已有方法增強
*/
UserDao userDao = sqlSession.getMapper(UserDao.class);
// 5、使用代理對象執行方法
List<User> users = userDao.findAllUser();
for (User user: users
) {
System.out.println(user);
}
// 6、釋放資源
sqlSession.close();
in.close();