mybatis注解開發動态sql
本篇來講一下如何使用mybatis注解模式中的動态sql
先來講一下什麼是動态sql
在我們實際開發的時候可能會出現很多方法需要一條很相似的sql語句來進行增删改查,但是這幾種方法又有不同的條件來執行,這時候我們就要對sql語句進行動态的更改,動态sql就是可以友善我們在一個方法當中實作很多不同的增删改查功能
下面附上mapper代碼:
@SelectProvider(type = com.svs.bupei.vadio.provider.VadioProvider.class, method = "selectAllVadio")
List<Vadio> selectAllVadio(Vadio vadio);
各位可能注意到了兩個屬性,type和method
type表示我們這個動态SQL語句存放的類是什麼
method表示這個類中的哪個方法實作了動态SQL
下面是自己建立的VadioProvider類的代碼
import com.svs.bupei.vadio.pojo.Vadio;
import org.apache.ibatis.jdbc.SQL;
public class VadioProvider {
public String selectAllVadio(Vadio vadio)
{
String sql = new SQL()
{
{
SELECT("vid,vpathimg,vname,vtype,vdescribe");
FROM("vadio");
WHERE("vname like concat('%' , ifNull(#{vname},'') , '%')");
AND();
WHERE("vtype like concat('%' , ifNull(#{vtype},'') , '%')");
AND();
WHERE("uname like concat('%' , ifNull(#{uname},'') , '%')");
AND();
WHERE("vsuccess = 1");
AND();
WHERE("vdelete = 0");
if(vadio.getNeedVlv() == true)
{
ORDER_BY("vlv desc");
}
if(vadio.getNeedVclick() == true)
{
ORDER_BY("vclick desc");
}
}
}.toString();
if(vadio.getPage() != -1)
{
sql += " limit #{page}, #{limit}";
}
return sql;
}
}
大家可以發現類名是和type對應,method是和方法對應的
由于本人沒有找到limit的方法是以就在後面自己加了limit語句