Mapper裡的sql語句註解

2021-07-29 10:59:44 字數 2244 閱讀 3816

一、

tab_user.id,tab_user.name,age,***,address

r.id r_id,r.name r_name,r.userid

這兩個相當於把需要的字段舉例出來,以便後面使用。

比如,根據id使用它,相當於貼上裡面的內容資訊一樣。

select

,from tab_user

left join role r

ontab_user.id=r.userid

二、jdbctype="nvarchar" />

jdbctype="integer" />

這裡的**就是對資料庫裡的欄位名和類的屬性不一致時做處理,裡面的collection就是user裡有role集合。組合關係嘛。

三、做非空判斷--使用,把where寫成主要還是當條件不滿足時不會出現語法錯誤。比如:select * from tab_user where ;

resultmap="baseresultmap">

select

from tab_user

name=#

四、resultmap="baseresultmap">

select

from tab_user

id=#

這裡用到trim:

trim 屬性

prefix:字首覆蓋並增加其內容

suffix:字尾覆蓋並增加其內容

prefixoverrides:字首判斷的條件

suffixoverrides:字尾判斷的條件

通俗點講,prefixoverrides是個標記,prefix這個就是專門覆蓋那個標記的。同理。比如上句,where就是替換and或者or的。

下面的這個更容易理解。

insert into tab_user

id,name,

age,

***,

address,

#,#,

#,#,

#,正確的address,後面不需要逗號了。但是我這裡有,suffixoverrides=「,」找到這個逗號,suffix=")" 將其替換成")"。這樣就**正確了。

五、select * from 表名 where  xx in ()這種語法結構的使用:

select

from tab_user

where id in

separator="," close=")">

#一般dao層傳過來的是個集合list,separator是分隔符,item="item"i,tem是集合中的元素物件。

六、標籤,這個在這裡不是注釋的意思。是說明這段**是純文字。比如像這個》(大於號),<(小於號)在這裡就是表示大於號小於號的意思。不是表示尖括號<>的一半。

select

from tab_user

七、當查詢的時候兩個類屬性名完全相同時,

select

,from tab_user

left join role r

ontab_user.id=r.userid

比如我的,角色role類有id,user類也有id。如果使用上面的第二個介紹,按正常想都是:

jdbctype="nvarchar" />

jdbctype="integer" />

這裡面的column="r_id"應該寫成column="id"才是吧。但是這樣不出來的。出來的這個id是user的id。所以我就在定義

的時候給他取了個別名。後面就用的是別名了。剛才注意到了沒有呢。。。

r.id r_id,r.name r_name,r.userid

八、主鍵生成策略:

select seq_emp.nextval as bid from dual

insert into emp

bid,empname,age,***,createtime,salary,

#,#,#,#,#,#

注意bid在**出現就應該不出錯了。就不詳細說,沒意思。

select sys_guid() from dual

insert into student 

stuid,stuname,

#,#,

九、insert into emp

bid,empname,age,***,createtime,salary,

select seq_emp.nextval, e.* from

select 

#,#,#,#,#

from dual

e

mapper裡的動態sql

1 if id findactiveblogwithtitlelike resulttype blog select from blog where state active test title null and title like 2 choose,when,otherwise id find...

Mybatis基於註解的sql語句

public inte ce 這是基於註解的對映方式,實現對資料的增刪改查,將sql語句直接寫在註解的括號中 這是乙個介面,其不需要類去實現它 下邊分別是插入,刪除,修改,查詢乙個記錄,查詢所有的記錄 insert insert into users name,age values public v...

Sql語句裡的遞迴查詢

以前使用oracle,覺得它的遞迴查詢很好用,就研究了一下sqlserver,發現它也支援在sql裡遞迴查詢 舉例說明 sqlserver2005版本的sql如下 比如乙個表,有id和pid欄位,id是主鍵,pid表示它的上級節點,表結構和資料 create table aaa id int nul...