詳解Mybatis動態sql

2022-10-06 05:21:09 字數 2514 閱讀 2196

1.什麼是mybatis動態sql

看到動態,我們就應該想到,這是乙個可以變化的sql語句

mybatis的動態sql是基於ognl表示式的,它可以幫助我們方便的在sql語句中實現某些邏輯

2.mybatis動態sql使用前準備

a.資料庫表

b.建立類

3.使用mybatis動態sql,得先知道一些屬性值

一,插入

selectkeyktjmk:在sql語句前後或後執行的sql語句

keycolumn:對應欄位名或別名

keyproperty:對應實體類的屬性名或map的key值

order:在執行語句前或後執行

resulttype:返回結果的型別

第一種方式:最簡單的動態sql 插入

insert into course values(seq_course.nextval,#,#)

select max(id) currid from course

測試測試結果

第二種方式:如果我不想插入這麼多的字段,coursename這個欄位我不想插入,那麼第一種這種方式,肯定是不行的

insert into course(id,

coursecode,

coursename

)values(seq_course.nextval,#,#

)測試及結果

由此可見,這種方式,在我不想插入coursecode這個欄位的時候,我們是可以實現的

現在為題又來了,如果我們想把最後乙個字段變為空,或者兩個欄位都變為空的時候,會出現什麼情況

最後乙個字段變為空

控制台第乙個問號後面好像多了乙個逗號

兩個欄位都變為空試試

還是多了乙個逗號

出現上面這種情況的原因是,在不想插入欄位的時候,我們並沒有把逗號去掉,所有現在介紹第三種方式

第三種方式,去掉多餘的逗號

這種方式要引入trim

trim也有幾種屬性

prefix:新增字首

prefixoverrides:覆蓋字首

suffix:新增字尾

suffixoverrides:覆蓋字尾

id,coursecode,

coursename

seq_course.nextval,

#,#看,問題解決了

ktjmk在做專案的時候,我們經常對資料庫進行插入資料,有時候我們會想同時插入多條,那麼,在使用mybatis我們該怎麼樣插入多條資料呢

在這裡,我們要解決幾個問題

1.我們怎麼樣複製表結構

create table course02 as select * from course

這個語句是不是很熟悉,對的,course02這個表不僅複製了course表的表結構,把course表的內容也複製進來了

2.我們怎麼樣只複製course的表結構,而不複製course表的內容呢

create table course03 as select * from course where 1!=1;

3.那麼進行插入的時候,是不是也是和這個一樣呢

insert into course03 select * from course;

答案是一樣的

4.怎麼進行多條語句的插入

insert into course03

select '6', 'yc06', '資料結構06' from dual union

select '7', 'yc07', '資料結構07'程式設計客棧 from dual union

select '8', 'yc08', '資料結構08' from dual

現在sqlwww.cppcns.com語句有了,我們就可以在配置檔案中進行插入操作了

insert into course

selec程式設計客棧t #,#,

# from dual

二,修改

1.使用trim,前面也已經介紹,使用trim可以去字首,是因為有suffixoverrides這個屬性

update course set

coursecode=#,

coursename=#

where id=#

2.使用set,可以代替語句中的set,還可以去掉字尾

update course

coursecode=#,

coursename=#

where id=#

3.在修改的時候我們也會有選擇性的修改,有時候我們不想修改的值,讓其和沒有修改的值一致

choose相當於多重if

第乙個when相當於if,第二個when相當於else if

otherwise相當於else

update course

coursecode=#,

coursecode=coursecode,

coursename=#,

coursename=coursename,

where id=#

本文標題: 詳解mybatis動態sql

本文位址:

mybatis 動態sql詳解

內容 轉到原網頁insert into t blog title,content,owner values select from t blog where id update t blog set title content owner where id select from t blog se...

Mybatis動態SQL例項詳解

動態sql 什麼是動態sql?mybatis的官方文件中是這樣介紹的?動態 sql 是 mybatis 的強大特性之一。如果你使用過 jdbc 或其它類似的框架,你應該能理解根據不同條件拼接 sql 語句有多痛苦,例如拼接時要確保不能忘記新增必要的空格,還要注意去掉列表最後乙個列名的逗號。利用動態 ...

Mybatis之動態SQL語法詳解

1 sql if sql where 判斷 ognl表示式 select from tbl employee id and last name like and email and gender 2 sql trim自定義字串擷取 用的不多,根據需求選擇 select from tbl employ...