1.什么是mybatis動態sql
看到動態,我們就應該想到,這是一個可以變化的sql語句
MyBatis的動態SQL是基于OGNL表達式的,它可以幫助我們方便的在SQL語句中實現某些邏輯
2.mybatis動態sql使用前準備
a.數據庫表
b.創建類
3.使用mybatis動態sql,得先知道一些屬性值
一,插入
selectKey:在sql語句前后或后執行的sql語句
keyColumn:對應字段名或別名
keyProperty:對應實體類的屬性名或map的key值
order:在執行語句前或后執行
resultType:返回結果的類型
第一種方式:最簡單的動態sql 插入
1
2
|
insert into course values (seq_course.nextval,#{courseCode},#{courseName}) select max (id) currId from course |
測試
測試結果
第二種方式:如果我不想插入這么多的字段,courseName這個字段我不想插入,那么第一種這種方式,肯定是不行的
1
2
3
4
5
6
7
8
|
insert into course(id, courseCode, courseName ) values(seq_course.nextval, #{courseCode}, #{courseName} ) |
測試及結果
由此可見,這種方式,在我不想插入courseCode這個字段的時候,我們是可以實現的
現在為題又來了,如果我們想把最后一個字段變為空,或者兩個字段都變為空的時候,會出現什么情況
最后一個字段變為空
控制臺第一個問號后面好像多了一個逗號
兩個字段都變為空試試
還是多了一個逗號
出現上面這種情況的原因是,在不想插入字段的時候,我們并沒有把逗號去掉,所有現在介紹第三種方式
第三種方式,去掉多余的逗號
這種方式要引入trim
trim也有幾種屬性
prefix:添加前綴
prefixOverrides:覆蓋前綴
suffix:添加后綴
suffixOverrides:覆蓋后綴
1
2
3
4
5
6
|
id, courseCode, courseName seq_course.nextval, #{courseCode}, #{courseName} |
看,問題解決了
在做項目的時候,我們經常對數據庫進行插入數據,有時候我們會想同時插入多條,那么,在使用mybatis我們該怎么樣插入多條數據呢
在這里,我們要解決幾個問題
1.我們怎么樣復制表結構
1
|
create table course02 as select * from COURSE |
這個語句是不是很熟悉,對的,course02這個表不僅復制了course表的表結構,把course表的內容也復制進來了
2.我們怎么樣只復制course的表結構,而不復制course表的內容呢
1
|
create table course03 as select * from COURSE where 1!=1; |
3.那么進行插入的時候,是不是也是和這個一樣呢
1
|
insert into course03 select * from course; |
答案是一樣的
4.怎么進行多條語句的插入
1
2
3
4
|
insert into course03 select '6' , 'yc06' , '數據結構06' from dual union select '7' , 'yc07' , '數據結構07' from dual union select '8' , 'yc08' , '數據結構08' from dual |
現在sql語句有了,我們就可以在配置文件中進行插入操作了
1
2
3
|
insert into course select #{courses.id},#{courses.courseCode}, #{courses.courseName} from dual |
二,修改
1.使用trim,前面也已經介紹,使用trim可以去前綴,是因為有suffixOverrides這個屬性
1
2
3
4
|
update course set courseCode=#{courseCode}, courseName=#{courseName} where id=#{id} |
2.使用set,可以代替語句中的set,還可以去掉后綴
1
2
3
4
|
update course courseCode=#{courseCode}, courseName=#{courseName} where id=#{id} |
3.在修改的時候我們也會有選擇性的修改,有時候我們不想修改的值,讓其和沒有修改的值一致
choose相當于多重if
第一個when相當于if,第二個when相當于else if
otherwise相當于else
1
2
3
4
5
6
|
update course courseCode=#{courseCode}, courseCode=courseCode, courseName=#{courseName}, courseName=courseName, where id=#{id} |
以上所述是小編給大家介紹的Mybatis動態sql的全部內容,希望對大家有所幫助!