作用
底層是對jdbc的封裝
優點使用 mybatis 時不需要編寫實現類,只需要寫需要執行的sql命令
jar
全域性配置檔案
<?xml version="1.0" encoding="utf-8" ?>
檔案作用: 編寫需要執行的 sql 命令
把 xml 檔案理解成實現類.
<?xml version="1.0" encoding="utf-8" ?>
單獨使用mybatis時的執行方法inputstream is = resources.getresourceasstream("myabtis.xml");
//使用工廠設計模式
sqlsessionfactory factory = new sqlsessionfactorybuilder().build(is);
//生產 sqlsession
sqlsession session=factory.opensession();
為命名空間
listlist = session.selectlist("a.b.selall");
for (flower flower : list)
session.close();
編寫路徑為了告訴編譯器如何找到其他資源.
路徑分類
絕對路徑
給某個類起別名
示例
select * from people limit #,#
給某個包下所有類起別名,別名為類名,不區分大小寫
mtbatis.xml
select * from people limit #,#
1. 概念複習
1.1 功能:從應用程式角度出發,軟體具有哪些功能.
1.2 業務:完成功能時的邏輯.對應 service 中乙個方法
1.3 事務:從資料庫角度出發,完成業務時需要執行的 sql 集合,統稱乙個事務.
事務回滾.如果在乙個事務中某個 sql 執行事務,希望回
歸到事務的原點,保證資料庫資料的完整性.
2.關於自動提交
在 mybatis 中預設是關閉了 jdbc 的自動提交功能
2.1 每乙個 sqlsession 預設都是不自動提交事務.
2.2 session.commit()提交事務.
2.3 opensession(true);自動提交.setautocommit(true);
3.關於底層封裝
mybatis 底層是對 jdbc 的封裝.
3.1 jdbc 中 executeupdate()執行新增,刪除,修改的 sql.返回值 int, 表示受影響的行數.
3.2 mybatis 中 標籤沒有 resulttype 屬性, 認為返回值都是 int
4.在 opensession()時 mybatis 會建立 sqlsession 時同時建立乙個transaction(事務物件),同時 autocommit 都為 false
如果出現異常,應該 session.rollback()回滾事務
insert into people values(default,#,#)
int index1 = session.insert("a.b.ins", p);
if(index1>0) else
update people set name = # where id = #
delete from people where id = #
實現步驟:
建立乙個介面
**實現步驟
在 mybatis.xml 中下使用
listselall();
}
select * from log where accin=# and accout=#
根據不同的條件需要執行不同的 sql 命令.稱為動態 sql/**
* mybatis 把引數轉換為 map 了,其中@param("key") 引數內
容就是 map 的 value
* @param accin123
* @param accout3454235
* @return
*/listselbyaccinaccout(@param("accin") string accin123,@param("accout") string accout3454235);
select * from log
where accin=#
andaccout=#
if使用
select * from log where 1=1
and accin=#
and accout=#
select * from log
and accin=#
and accout=#
比直接使用少寫 where 1=1
用在修改 sql 中 set 從句
例項
update log
id=#,
accin=#,
accout=#,
where accin=#
trim
select * from log
and accin=#
bind
resultmap n+1查詢
實現步驟
1.查詢關聯物件(1對1)
在 student 實現類中包含了乙個 teacher 物件
public class student ;
select * from student
簡化方式
n+1 時,如果列名和屬性名相同可以不配置
select * from student
2.查詢關聯物件(1對多)
select * from teacher
select * from student
where tid=#
使用實現載入集合資料(聯合查詢方式)
select t.id tid, t.name tname, s.id sid, s.name sname, age, tid
from teacher t left join student s on t.id = s.tid
mybatis 可以通過主鍵判斷物件是否被載入過
註解:為了簡化配置檔案
使用註解時mybatis.xml中使用
查詢
@select("select * from teacher")
listselall();
新增
@insert("insert into teacher values(default,#)")
int insteacher(teacher teacher);
修改
@update("update teacher set name=# where id=#")
int updteacher(teacher teacher);
刪除
@delete("delete from teacher where id=#")
int delbyid(int id);
mybatis框架學習筆記1
1.巨集觀認識mybatis mybatis是apache下乙個開源的持久層框架,其可以自主編寫sql語句 靈活性更高。2.mybatis執行流程 基於mybatis 3.2 通過sqlsessionfactorybuilder 建造者模式 建立sqlsessionfactory 介面 物件 sql...
個人學習筆記 Mybatis框架學習 5
開啟延遲載入的支援 lazyloadingenabled value true aggressivelazyloading value false settings 之後在相應的對映關係物件配置時,引入select屬性,屬性的值配置對應的延時載入要呼叫的語句,例如 配置user物件中accounts...
Mybatis框架學習 一
詳細內容 省略了繁瑣的建立連線,statement,jdbc相關的處理 sql寫在xml中,開發人員專注於sql,方便優化效能和管理sql語句 支援動態sql 缺點 sql工作量大,欄位多,關聯表多是更是如此 sql依賴於資料庫,可移植性不高 xml裡 id 必須唯一,導致了dao中方法不支援過載 ...