個人博客網:https://wushaopei.github.io/ (你想要這里多有)
一、myBatis的注解使用方式
二、mybatis的參數傳遞
1、一個普通數據類型
Mapper接口的方法:
mapper.xml配置文件:
2、多個普通數據類型
方法代碼:
配置文件:
2、@Param注解命名參數
方法代碼:
配置信息:
3、傳遞一個Map對象作為參數
方法代碼:
配置信息:
4、一個JavaBean數據類型
方法代碼:
配置信息:
5、多個Pojo數據類型
方法代碼:
配置信息:
6、模糊查詢
需求:現在要根據用戶名查詢用戶對象。 也就是希望查詢如下: select * from t_user where last_name like '%張%'
方法代碼:
7、#{}和${}的區別
#{} 是占位符
${} 是做字符串原樣輸出,然后和配置的sql語句做字符串拼接。
8、MySQL的字符串拼接,concat函數實現。
二、自定義結果集<resultMap></resultMap>
1、<resultMap>的作用。
ResultMap標簽可以給那些查詢出來的結果要封裝成為的Bean對象。是復雜bean對象的情況。
原來我們查詢出來的結果,封裝的對象里面的屬性都是普通的屬性。不包含子的javaBean對象。也不包含Bean對象的集合。那種叫普通的javabean。
那些Bean對象中又包含了子的Bean對象的情況,或者是Bean對象中又包含的bean對象集合的情況,叫復雜的Bean對象。
這種情況,只能使用ResultMap標簽來將結果集轉換成為復雜的Bean對象。而簡單的不需要。簡單的Bean對象,只需要使用ResultType屬性即可。
2、創建一對一數據庫表
3、創建實體對象
4、一對一級聯屬性使用
Mapper接口的代碼:
KeyMapper配置文件的內容:
4.2、<association /> 嵌套結果集映射配置
4.3、<association /> 定義分步(立即)查詢
KeyMapper接口:
LockMapper接口:
LockMapper配置信息:
KeyMapper的配置信息:
5、延遲加載
延遲加載在一定程序上可以減少很多沒有必要的查詢。給數據庫服務器提升性能上的優化。
要啟用延遲加載,需要在mybatis-config.xml配置文件中,添加如下兩個全局的settings配置。
懶加載還需要同時引入兩個jar包(注意: 3.2.8版本需要導以下兩個包)
5.2、延遲加載的一對一使用示例
三、多對一、一對多的使用示例
1、創建一對多數據庫
2、<collection/> 一對多,立即加載
ClazzMapper接口的代碼:
ClazzMapper配置信息:
3、一對多,分步查詢賴加載
ClazzMapper接口方法:
StudentMapper接口方法:
StudentMaper的配置內容:
ClazzMapper的配置內容:
4、雙向關聯
StudentMapper接口
StudentMapper的配置:
ClazzMapper的配置信息修改:
測試:
注意:雙向關聯常見問題,就是死循環:
解決方法一:不要調用任何一方的toString方法
解決方法二:最后一次的查詢使用resultType,而不是使用ResultMap