mybatis結合mysql批量操作及查詢sql

2021-09-07 16:37:56 字數 2095 閱讀 2143

mysql資料庫 

批量操作主要使用的是mybatis的foreach,遍歷引數列表執行相應的操作,所以批量插入/更新/刪除的寫法是類似的,只是sql略有區別而已。mysql批量操作需要資料庫連線配置allowmultiqueries=true才可以。 

(0)批量查詢:

selectuserdatalist

" parametertype="

list

" resulttype="

string

">

select userdata from tbl_hbb_user_info where mobile in

(

list

" item="

item

" index="

index

" separator="

,">#

foreach>)

select>

(1)批量插入  

insert into user (name, age,dept_code) values  

(#,

#,

# )

上面演示的是mysql的寫法(表主鍵自增的寫法),因為mysql支援主鍵自增,所以直接設定usegeneratedkeys=true,即可在插入資料時自動實現主鍵自增;不需要自增時就不需要設定usegeneratedkeys,而且插入sql包含所有字段即可。實際mysql還有另外一種寫法,就是拼接values的寫法,這種方法我測試過比多條insert語句執行的效率會高些。不過需要注意一次批量操作的數量做一定的限制。具體寫法如下:  

insert into user (name, age,dept_code) values  

(#,

#,

# )

對於oracle不支援主鍵自增,需要序列替換,所以在sql寫法上略有不同,需要在insert語句前加個 ...告知mybatis主鍵如何生成(selectkey中間的內容有省略,實際是生成主鍵的sql)。 

(2)批量更新  

update user set name=#,age=#  

where id=#

(3)批量刪除  

delete from user  

where id=#

二、模糊查詢  

select  

from user

where name like concat('%',#,'%' )

上面的模糊查詢語句是mysql資料庫的寫法示例,用到了mysql的字串拼接函式concat,其它資料庫使用相應的函式即可。 

三、多條件查詢 

多條件查詢常用到mybatis的if判斷,這樣只有條件滿足時,才生成對應的sql。  

select  

from user

name = #

and age = #

四、聯表查詢 

聯表查詢在返回結果集為多張表的資料時,可以通過繼承resultmap,簡化寫法。例如下面的示例,結果集在user表字段的基礎上新增了dept的部門名稱

select  

u.*, d.name

from user u inner join dept d on u.dept_code = d.code

u.name = #

and u.age = #

update t_mm_add_stock_detail t

sett.remark=#,

t.modify_time=sysdate,

t.modify_user_code=#

where t.id=#

; update t_mm_add_stock t set t.modify_time=sysdate, t.modify_user_code=#, t.remark=#, t.storage_state='待錄價'where t.id=# if>

二 mybatis和spring結合

配置 xmlns xmlns context xmlns p xmlns aop xmlns tx xmlns xsi xsi schemalocation spring beans 4.0.xsd spring context 4.0.xsd spring aop 4.0.xsd spring t...

mybatis和spring結合使用

mybatis和spring結合使用,就是通過spring建立運算元據庫的物件,而不需直接獲取mybatis中session直接操作。一 這裡使用了properties配置檔案,只要在spring的配置檔案中使用 就能在 的形式進行直接獲取數值 二 spring和mybatis進行連線,需要在spr...

mysql左右結合 結合左右加入mysql查詢

唯一可以做到的就是使用union.mysql不像mssql那樣支援full joinjust.select from tbl1 t1 left join tbl2 t2 on t1.col t2.col union select from tbl1 t1 right join tbl2 t2 on ...