一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 詳解Mybatis動態sql

詳解Mybatis動態sql

2020-04-18 12:06xiaoerduo123x JAVA教程

MyBatis的動態SQL是基于OGNL表達式的,它可以幫助我們方便的在SQL語句中實現某些邏輯。本文給大家介紹Mybatis動態sql小結,感興趣的朋友參考下

1.什么是mybatis動態sql

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

MyBatis的動態SQL是基于OGNL表達式的,它可以幫助我們方便的在SQL語句中實現某些邏輯

2.mybatis動態sql使用前準備

a.數據庫表

詳解Mybatis動態sql

b.創建類

詳解Mybatis動態sql

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

詳解Mybatis動態sql

測試

測試結果

詳解Mybatis動態sql

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

?
1
2
3
4
5
6
7
8
insert into course(id,
courseCode,
courseName
)
values(seq_course.nextval,
#{courseCode},
#{courseName}
)

測試及結果

詳解Mybatis動態sql

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

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

最后一個字段變為空

詳解Mybatis動態sql

控制臺第一個問號后面好像多了一個逗號

兩個字段都變為空試試

詳解Mybatis動態sql

還是多了一個逗號

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

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

這種方式要引入trim

trim也有幾種屬性

prefix:添加前綴

prefixOverrides:覆蓋前綴

suffix:添加后綴

suffixOverrides:覆蓋后綴

?
1
2
3
4
5
6
id,
courseCode,
courseName
seq_course.nextval,
#{courseCode},
#{courseName}

 

詳解Mybatis動態sql

看,問題解決了

在做項目的時候,我們經常對數據庫進行插入數據,有時候我們會想同時插入多條,那么,在使用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

詳解Mybatis動態sql

二,修改

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的全部內容,希望對大家有所幫助!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 包射屋 | 欧美夫妇野外交换hd高清版 | 久久精品国产亚洲AV热无遮挡 | 无码一区国产欧美在线资源 | 91精品大神国产在线播放 | 国内自拍网红在线综合 | 国内精品在线播放 | 香蕉精品 | 九九精品免视频国产成人 | 美女林柏欣21p人体之仓之梦 | 男人天堂网www | 青草视频网站在线观看 | brazzers欧美教师 | 成人在线观看免费视频 | 国产精品2 | 4438全国最大成人网视频 | 国产福利在线观看永久视频 | 操妈小说| 国产成人在线播放 | 亚洲欧美国产自拍 | 色欲麻豆国产福利精品 | 亚洲2017久无码 | 国产精品免费精品自在线观看 | 金莲一级淫片aaaaaa | 俄罗斯15一16处交 | 美女扒下内裤让男人桶的图片 | 欧美日日操 | 性吧有你 | 精品国产精品人妻久久无码五月天 | 激情五月开心 | 国产第一自拍 | 日韩国产欧美成人一区二区影院 | 大伊香蕉精品视频一区 | 国产午夜亚洲精品理论片不卡 | 日韩一区视频在线 | 俺去俺来也www色官网免费的 | 饭冈加奈子在线播放观看 | 国产精品va在线观看无 | 女教师巨大乳孔中文字幕免费 | 日韩毛片在线影视 | 国产精品美女久久久久 |