国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解Mybatis動(dòng)態(tài)sql

2019-11-26 14:26:13
字體:
供稿:網(wǎng)友

1.什么是mybatis動(dòng)態(tài)sql

看到動(dòng)態(tài),我們就應(yīng)該想到,這是一個(gè)可以變化的sql語句

MyBatis的動(dòng)態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語句中實(shí)現(xiàn)某些邏輯

2.mybatis動(dòng)態(tài)sql使用前準(zhǔn)備

a.數(shù)據(jù)庫表

b.創(chuàng)建類

3.使用mybatis動(dòng)態(tài)sql,得先知道一些屬性值

一,插入

selectKey:在sql語句前后或后執(zhí)行的sql語句

keyColumn:對(duì)應(yīng)字段名或別名

keyProperty:對(duì)應(yīng)實(shí)體類的屬性名或map的key值

order:在執(zhí)行語句前或后執(zhí)行

resultType:返回結(jié)果的類型

第一種方式:最簡(jiǎn)單的動(dòng)態(tài)sql 插入

insert into course values(seq_course.nextval,#{courseCode},#{courseName})select max(id) currId from course

測(cè)試

測(cè)試結(jié)果

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

insert into course(id,courseCode,courseName)values(seq_course.nextval,#{courseCode},#{courseName})

測(cè)試及結(jié)果


由此可見,這種方式,在我不想插入courseCode這個(gè)字段的時(shí)候,我們是可以實(shí)現(xiàn)的

現(xiàn)在為題又來了,如果我們想把最后一個(gè)字段變?yōu)榭眨蛘邇蓚€(gè)字段都變?yōu)榭盏臅r(shí)候,會(huì)出現(xiàn)什么情況

最后一個(gè)字段變?yōu)榭?/p>

控制臺(tái)第一個(gè)問號(hào)后面好像多了一個(gè)逗號(hào)

兩個(gè)字段都變?yōu)榭赵囋?/p>

還是多了一個(gè)逗號(hào)

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

第三種方式,去掉多余的逗號(hào)

這種方式要引入trim

trim也有幾種屬性

prefix:添加前綴

prefixOverrides:覆蓋前綴

suffix:添加后綴

suffixOverrides:覆蓋后綴

id,courseCode,courseNameseq_course.nextval,#{courseCode},#{courseName}

看,問題解決了

在做項(xiàng)目的時(shí)候,我們經(jīng)常對(duì)數(shù)據(jù)庫進(jìn)行插入數(shù)據(jù),有時(shí)候我們會(huì)想同時(shí)插入多條,那么,在使用mybatis我們?cè)撛趺礃硬迦攵鄺l數(shù)據(jù)呢

在這里,我們要解決幾個(gè)問題

1.我們?cè)趺礃訌?fù)制表結(jié)構(gòu)

create table course02 as select * from COURSE

這個(gè)語句是不是很熟悉,對(duì)的,course02這個(gè)表不僅復(fù)制了course表的表結(jié)構(gòu),把course表的內(nèi)容也復(fù)制進(jìn)來了

2.我們?cè)趺礃又粡?fù)制course的表結(jié)構(gòu),而不復(fù)制course表的內(nèi)容呢

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

3.那么進(jìn)行插入的時(shí)候,是不是也是和這個(gè)一樣呢

insert into course03 select * from course;

答案是一樣的

4.怎么進(jìn)行多條語句的插入

insert into course03select '6', 'yc06', '數(shù)據(jù)結(jié)構(gòu)06' from dual unionselect '7', 'yc07', '數(shù)據(jù)結(jié)構(gòu)07' from dual unionselect '8', 'yc08', '數(shù)據(jù)結(jié)構(gòu)08' from dual

現(xiàn)在sql語句有了,我們就可以在配置文件中進(jìn)行插入操作了

insert into courseselect #{courses.id},#{courses.courseCode},#{courses.courseName} from dual

二,修改

1.使用trim,前面也已經(jīng)介紹,使用trim可以去前綴,是因?yàn)橛衧uffixOverrides這個(gè)屬性

update course setcourseCode=#{courseCode},courseName=#{courseName} where id=#{id}

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

update coursecourseCode=#{courseCode},courseName=#{courseName} where id=#{id}

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

choose相當(dāng)于多重if

第一個(gè)when相當(dāng)于if,第二個(gè)when相當(dāng)于else if

otherwise相當(dāng)于else

update coursecourseCode=#{courseCode},courseCode=courseCode,courseName=#{courseName},courseName=courseName,where id=#{id}

以上所述是小編給大家介紹的Mybatis動(dòng)態(tài)sql的全部?jī)?nèi)容,希望對(duì)大家有所幫助!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 明溪县| 那坡县| 青河县| 古丈县| 宁国市| 安庆市| 福清市| 府谷县| 车险| 丽水市| 珠海市| 松潘县| 陆良县| 兴国县| 方正县| 海淀区| 建水县| 英山县| 敖汉旗| 利川市| 班戈县| 宜丰县| 沂南县| 平塘县| 鸡泽县| 疏附县| 武川县| 文安县| 海林市| 万源市| 綦江县| 平果县| 黄冈市| 栖霞市| 嵊州市| 望都县| 衡南县| 财经| 射阳县| 福鼎市| 建宁县|