一. 解決列名和屬性名不一致的兩個(gè)途徑
1 定義列別名:
可以通過 列別名的方式將列名和屬性保持一致 繼續(xù)使用自動(dòng)映射ResultType
2.使用ResultMap? ? ?
用于自定義映關(guān)系被环,可以自主設(shè)置列名和屬性名的映射關(guān)系,使用resultMap,將不使用自動(dòng)映射機(jī)制
注意:主鍵用 id? 標(biāo)簽? ?非主鍵使用result 標(biāo)簽
二? 業(yè)務(wù)裝配:
mapper 層只做單表查詢操作惶岭,在service層進(jìn)行手動(dòng)裝配绒尊,實(shí)現(xiàn)業(yè)務(wù)裝配
三? resultMap的N+1實(shí)現(xiàn)多對(duì)一
在mapper層 中的配置
<association> 用于關(guān)聯(lián)一個(gè)對(duì)象
property:指定要關(guān)聯(lián)的屬性名
select:設(shè)定要繼續(xù)引用的查詢数焊,即空間加id namespace+id
column:查詢時(shí)需要傳遞的列的數(shù)據(jù)
四 resultMap的N+1方式實(shí)現(xiàn)多表查詢一對(duì)多
mapper層
<collection>用于關(guān)聯(lián)一個(gè)集合
property:指定要關(guān)聯(lián)的屬性名
select:設(shè)定要繼續(xù)引用的查詢乍惊,空間加id
column:查詢時(shí)需要傳遞的列的數(shù)據(jù)
五? ?Auto—Mapping實(shí)現(xiàn)多表查詢
主要是利用別名?
注意:別名出現(xiàn)特殊符號(hào)蔫耽,是用~~符號(hào)引起來撩炊,Oracle 可以使用? “ ”? 符號(hào)
六? 注解:注解是用于描述代碼的代碼
什么時(shí)候使用:使用注解一般用于簡(jiǎn)化配置文件. 但是, 注解有時(shí)候也不
是很友好(有時(shí)候反而更麻煩), 例如動(dòng)態(tài) SQL.
注解簡(jiǎn)單好用 非常明了
注解關(guān)聯(lián)查詢
在學(xué)生實(shí)體類中定義一個(gè)對(duì)象clazz 作為班級(jí)對(duì)象
@One的作用是通過查詢到的一個(gè)字段作為參數(shù)
里面的select=后面的是查詢方法的地址? 通過cid? 返回班級(jí)信息外永,
對(duì)應(yīng)column為cid為班級(jí)號(hào)
Mybatis運(yùn)行過程涉及的類和接口
1.Resources類 用于加載MyBatis核心配置文件
2 XMLConfigBuilder類:用于解析xml文件(核心配置文件)
3 configuration類:用于存放xml文件解析后的結(jié)構(gòu)
4DefaultSQlSessionFactory類:是SqlSession接口的實(shí)現(xiàn)類,創(chuàng)建
時(shí)需要使用configuration對(duì)象
5 SqlSession接口:是MyBatis操作的核心
6 DefaultSqlSession類:是SqlSession接口的實(shí)現(xiàn)類
7 TransactionFactory 接口:用于生產(chǎn)Transaction對(duì)象
8 用于操作數(shù)據(jù)庫的事務(wù)對(duì)象
9 Executor 接口:
是MyBatis的核心執(zhí)行器拧咳,類似于jdbc中的Statement伯顶,常用的實(shí)現(xiàn)類是SimpleExecutor