原則:規定優於配置
硬編碼方式
/*abc.java*/
Configuration conf = new Configuration();
con.setName("myProject") ;
配置方式:
abc.xml
<name>myProject</name>
默認值就是myProject
具體實現的步驟:
1.基礎環境:mybatis.jar/ojdbc.jar、conf.xml、mapper.xml
2.(不同之處)
目標: 省略掉statement,即直接可以定位出SQL語句
a.接口,接口中的方法必須遵循以下約定:
1.方法名和mapper.xml文件中標籤的id值相同
2.方法的 輸入參數 和mapper.xml文件中標籤的 parameterType類型一致 (如果mapper.xml的標籤中沒有 parameterType,則說明方法沒有輸入參數)
3.方法的返回值 和mapper.xml文件中標籤的 resultType類型一致 (無論查詢結果是一個 還是多個(student、List),在mapper.xml標籤中的resultType中只寫 一個(Student);如果沒有resultType,則說明方法的返回值爲void)
除了以上約定,要實現 接口中的方法 和 Mapper.xml中SQL標籤一一對應,還需要以namespace的值 ,就是 接口的全類名( 接口 - mapper.xml 一一對應)
匹配的過程:
1.根據 接口名(比如StudentMapper) 找到 mapper.xml文件(根據的是namespace=接口全類名,比如<mapper namespace = "xx.xxx.xxxx.StudentMapper">
)
2.根據 接口的方法名 找到 mapper.xml文件中的SQL標籤 (方法名=SQL標籤Id值)
以上2點可以保證: 當我們調用接口中的方法時,程序能自動定位到 某一個Mapper.xml文件中的sqL標籤
習慣:SQL映射文件(mapper.xml) 和 接口放在同一個包中 (注意修改conf.xml中加載mapper.xml文件的路徑)
比如像這樣👇
以上,可以通過接口的方法->SQL語句
執行:
StudentMapper studentMapper = session.getMapper(StudentMapper.class) ;
studentMapper.方法();
通過session對象獲取接口(session.getMapper(接口.class);),再調用該接口中的方法,程序會自動執行該方法對應的SQL。
優化