總結一下在mybatis中使用的運算元據庫方式:
具體實現可參考我的部落格:
步驟:
解決資料庫的列名字與實體類中變數出現不同名,會出現不匹配的錯誤。
動態sql語句(主要負責拼裝sql語句):
include標籤:
在資料庫的使用中,查詢的時候時候不要使用*號,
*是表示所有,對效率都有非常大的影響,所以使用標籤
id,username,
userpassword,
address
if標籤:
where address='北京'
and username =#
choose和when標籤:
choose標籤按順序判斷其內部when(相當於if)標籤中的test條件出否成立,如果有乙個成立,則 choose 結束。
當 choose 中所有 when 的條件都不滿則時,則執行 otherwise(相當於else) 中的sql
where address='北京'
and username =#
and userpassword like '%%'
mybatis中#和$的區別?
1.#相當於對資料加上雙引號,$相當於對直接顯示資料
2.#對資料加上了雙引號,如:order by #user_id解析成sql時值為order by "id"
$將傳入的資料直接顯示生成在sql中。如:order by $user_id解析成的sql為order by id。
3.#方式能夠很大程度防止sql注入。$方式無法防止sql注入。
4.$方式一般用於傳入資料庫物件,例如傳入表名.
5.一般能用#的就別用$
where標籤:
where標籤if的條件第乙個不成立,第二成立 and address=#。
如果mybatis檢測到where之後的判斷不成立則去除and關鍵字,如果if條件都不成立 where關鍵會去掉 。
username=#
and address=#
set標籤:
第乙個if條件成立,第二條件不成立,會自動去掉後面的逗號。
如果兩個條件都不成立,set不會出現,但是會報異常,sql語法異常;至少有乙個條件要成立。
update t_user
username=#,
userpassword=#
where id=#
trim標籤:
用trim 替換每個條件判斷標籤如set,prefix="set" 字首為set。
suffixoverrides="," 字尾覆蓋,第乙個if成立,
第二 if不成立會去掉後面的逗號 至少有乙個if要成立,否者會語法異常。
字尾覆蓋:
username=#
and address=#
字首覆蓋(字首是去掉前面and):
username=#
and address=#
只用兩種情況:一對一關聯,一對多關聯
一對一關聯 association
select
u.id uid,u.username,u.userpassword,u.address,g.id gid,g.groupname,g.grouploc
from (select * from t_user where id=#)u
left join t_group g
on u.group_id=g.id
一對多關聯 collection
select
u.id uid,u.username,u.userpassword,u.address,g.id gid,g.groupname,g.grouploc
from (select * from t_user where id=#)u
left join t_group g
on u.group_id=g.id
mybatis框架Mapper配置詳解
標籤名稱 標籤作用 insert 用來對映插入語句 update 用來對映更新語句 delete 用來對映刪除語句 select 用來對映查詢語句 resultmap 用來將從資料庫結果集取出的資料對映到相應的實體物件的字段中 sql配置可以被其他語句引用的sql語句塊 cache 給定命名空間的快...
mybatis框架 配置檔案詳解
全域性配置檔案 sqlmapconfig.xml 的配置內容和順序如下 順序不能亂 即配置載入properties檔案,首先建立db.properties db.driver com.mysql.jdbc.driver db.url jdbc mysql localhost 3306 mybatis...
Mybatis框架 初始Mybatis
1.1.mybatis框架簡介 mybatis是乙個開源的資料持久層框架,它的內部封裝了通過了jdbc訪問資料庫的操作,支援普通的sql查 詢 儲存過程和高階對映,幾乎消除了所有的jdbc 和引數的手工設定以及結果集的檢索。其主要思想是將sql 語句剝離出來,配置在配置檔案中,實現sql的靈活配置 ...