天天看點

mybatis注解開發動态sqlmybatis注解開發動态sql

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語句

繼續閱讀