所有的持久層框架
1.jdbc--都做了封裝
2.Sql--有的做了封裝
封裝了一半的就是半自動框架。
兩樣都封裝了就是全自動框架。
前身是ibatis 、開源。
輕量級框架。
1.xml
a) 數(shù)據(jù)庫配置文件
b) 接口、實體、sql語句之間的配置關(guān)系。
2.java類、接口
SqlsessionFactory
SqlSession:封裝jdbc的連接 維護持久層到數(shù)據(jù)庫的會話。
連接池:管理連接 。 如何管理?
讀寫分離。
02--
表達(dá)式不要寫在sql語句里面,會影響查詢效率。
在mybatis映射層中 map作為參數(shù)的時候只能單獨存在。
<!-- namespace 命名空間,實際上就是相當(dāng)于我們的程序中的包,
1、用于分類
2、保證命名空間內(nèi)部的文件都是唯一的-->
Sql標(biāo)簽 :
把相同的代碼進行封裝。
<sql id=”eg”>where user_name like concat(#{map.name},’%’) </>
在需要用到的地方使用 include標(biāo)簽進行引用
Select name form t_emp <include refid=”eg”></>
動態(tài)sql:
<foreach>
</foreach>
<where>標(biāo)簽會直接忽略掉緊隨其后的and或者 or。
<if>
<if test=”條件表達(dá)式 --map.name != null ”> 標(biāo)簽 ---//如果傳遞的參數(shù)的map,那//么test里面的表達(dá)式只能取鍵來進行比較,不能使用#、$
user_name like concat(#{map.name},’%’) -- 滿足條件后添加sql內(nèi)容
</>
<trim PRefix=”where” prefixOverides=”and|or” suffix=”order by” suffixOverides=”and|or” >標(biāo)簽 在不使用where標(biāo)簽的時候使用。
//prefix 前綴
//suffixOverides 后綴
user_name like concat(#{map.name},’%’)
</trim>
Id desc;
Switch
<set >標(biāo)簽
<if test=’”user.name != null”> 條件語句后需要添加”,” ,如果是最后一個條件 會自動去掉”,”
User_name =#{user.name},
</>
<if test=’”user.sex!= null”>
User_name =#{user.sex},
</>
<if test=’”user.age!= null”>
User_name =#{user.age} ,
</>
</>
對象中包含對象要取值就用
對象.對象.屬性
Mybatis支持一個標(biāo)簽內(nèi)寫多條sql
在配置時要添加 allowMultiQuery
1.繼承 子類與父類
2.實現(xiàn) 接口
3.關(guān)聯(lián)
4.組合、聚合--整體與部分的關(guān)系 組合整體消亡個體隨之消亡 聚合整體消亡,個體繼續(xù)存在。
5.依賴 使用與被使用的關(guān)系
關(guān)系--在一定范圍內(nèi)有效。
關(guān)聯(lián)關(guān)系。
對象包含對象時添加配置:
<association property=”屬性(javabean中對應(yīng)的字段)” type=”屬性的類型” > 關(guān)聯(lián)關(guān)系是1 就是單獨的一個對象
<> 屬性1
<> 屬性2
</>
全局開啟延遲加載
<seting name =”lazyLoadingEnabled
” value=”true”>
<seting>
<association property=”屬性(javabean中對應(yīng)的字段)”
javatype=”屬性的類型”
//Fetchtype=”lazy”;--延遲加載。
Select=”請求路徑.對應(yīng)sql的id”
Column=”結(jié)果集里面對應(yīng)的值”
>
刪除時先刪和自己有關(guān)系的。
同時執(zhí)行多條sql語句的時候 ,受影的結(jié)果是最后一條語句影響的行數(shù)。
1.預(yù)加載,聯(lián)表查詢。
2.及時加載。先查自己,再查與之有關(guān)聯(lián)的數(shù)據(jù)
3.延遲加載,懶加載。使用的時候再加載。--內(nèi)部實現(xiàn)代理模式。Fetchtype=”lazy”
<collection property=” ” javatype =”” select=”” column =””>
</>
新聞熱點
疑難解答