MyBatis3-topic04,05 -介面式程式設計
阿新 • • 發佈:2018-11-27
筆記要點
/**介面式程式設計: * 1. 原生: Dao 介面-->Dao介面的實現類 * mybatis: Mapper --> 有一個與之對應的 XXMapper.xml * 2. SqlSession * 代表與資料庫的一次會話,用完必須關閉資源; *3.SqlSession 和connection 一樣都是非執行緒安全,不能宣告為全域性變數; * 每次使用都需要重新生命. * 4.mapper介面沒有實現類, 但是mybatis 會為這個介面生成一個代理物件: * (需要先將介面和XML檔案進行繫結!) * EmployeeMapper empMapper=openSession.getMapper(EmployeeMapper.class); * 5.兩個重要的配置檔案: * mybatis的全域性配置檔案: 包含資料庫連線池資訊,事物管理器資訊,系統檔案的資訊..... * SQL對映檔案: 儲存了每一個SL語句的對映資訊,*/
出錯分析
重新組織了工程結構後, mapper.xml內的內容改為: <select id="getEmpById" resultType="com.bean.Employee">...</select>. resultType 記得更改為當前DAO的src下的類的路徑!
工程重新組織
本節測試程式碼 Test_tp04
package com.test; import com.bean.*; import com.dao.*; import org.apache.*;import java.io.IOException; import java.io.InputStream; public class Test_tp04 { //建立一個模板,直接返回一個新建的SqlSessionFactory public SqlSessionFactory getSqlSessionFactory() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream=Resources.getResourceAsStream(resource);return new SqlSessionFactoryBuilder().build(inputStream); } @Test //第四節測試,測試介面式程式設計 public void test01() throws IOException{ //1.獲取sqlSessionFactory物件 SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); //呼叫模板的方法 //2.獲取一個SqlSession物件 SqlSession openSession = sqlSessionFactory.openSession(); try { //3.獲取介面的實現類 EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class); Employee employee = mapper.getEmpById(1); System.out.println(mapper.getClass()); System.out.println(employee); } finally { openSession.close(); } } }
測試demo結果展示
DEBUG 11-27 12:12:24,463 ==> Preparing: select id,last_name lastname,gender,email from tbl_employee where id = ? (BaseJdbcLogger.java:145) DEBUG 11-27 12:12:24,479 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:145) DEBUG 11-27 12:12:24,495 <== Total: 1 (BaseJdbcLogger.java:145) class com.sun.proxy.$Proxy4 Employee{id=1, lastname='tom', email='[email protected]', gender='0'}