MyBatis動態sql查詢

2021-07-30 07:21:38 字數 2743 閱讀 1817

什麼是動態sql:

mybatis核心 對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接、組裝。

需求

public

class userpo

if>

test="userpo.id!=null">

and id=#

if>

if>

where>

select>

id="findusercount"

parametertype="cn.domarvel.vo.userqueryvo"

resulttype="_int">

select count(id) from user

test="userpo!=null">

test="userpo.username!=null and userpo.username!=''">

and username like #

if>

test="userpo.id!=null">

and id=#

if>

if>

where>

select>

public

inte***ce

public listfinduserbynamesandid(userqueryvo userqueryvo) throws exception;

public

intfindusercount(userqueryvo userqueryvo) throws exception;

}

測試**
public

class

userdaotest catch (ioexception e)

}@test

public

void

finduserbynamesandid() throws exception

}@test

public

void

findusercount() throws exception

}

需求:

定義sql片段

id="query_user_username_id">

test="userpo!=null">

test="userpo.username!=null and userpo.username!=''">

and username like #

if>

test="userpo.id!=null">

and id=#

if>

if>

sql>

引用sql片段

id="finduserbynamesandid"

parametertype="cn.domarvel.vo.userqueryvo"

resulttype="cn.domarvel.po.userpo">

select * from user

refid="query_user_username_id">

include>

where>

select>

向sql傳遞陣列或list,mybatis使用foreach解析

需求:

在使用者查詢列表中增加多個id輸入查詢。

sql語句如下:

兩種方式:

select * from

user

where username like

'%小明%'

and (id=1

or id=2)

select * from

user

where username like

'%小明%'

and id in(1,2)

在輸入引數型別中新增listids傳入多個id
public

class userqueryvo

if>

test="ids!=null">

collection="ids"

item="item_id"

open="and ("

close=")"

separator="or">

id=#

foreach>

if>

if>

sql>

測試**
@test

public

void finduserbynamesandid() throws exception

}

另外乙個sql的實現:

collection="ids"

item="item_id"

open="and id in("

close=")"

separator=",">

#foreach>

mybatis 動態sql(查詢學習)

mybatis 這個框架 與書寫 sql 語句 有很大的關係,所以 在 沒有 sql 很好的 書寫能力下,會遇到好多問題,本人就是例子,先將學習 查詢操作中遇到的問題進行總結 一,標籤的使用,繫結上下文 多用與 sql 語句中 sql 語句like 模糊查詢使用 使用案列 select from s...

mybatis 動態Sql的模糊查詢

1 where teacher.tname like concat concat 2 distinct的使用 下面先來看看例子 table id name 1 a2 b 3 c4 c 5 b比如我想用一條語句查詢得到name不重複的所有資料,那就必須使用distinct去掉多餘的重覆記錄。selec...

Mybatis 模糊查詢 動態sql 插入回填

方式一 用 selectuser parametertype com.gec.bean.user resulttype com.gec.bean.user select from t user where address like select 方式二 用 value 然後傳入引數時加入 selec...