mybatis注解开发动态sql

mybatis注解开发动态sql

本篇来讲一下如何使用mybatis注解模式中的动态sql

先来讲一下什么是动态sql

在我们实际开发的时候可能会出现很多方法需要一条很相似的sql语句来进行增删改查,但是这几种方法又有不同的条件来执行,这时候我们就要对sql语句进行动态的更改,动态sql就是可以方便我们在一个方法当中实现很多不同的增删改查功能

下面附上mapper代码:

@SelectProvider(type = com.svs.bupei.vadio.provider.VadioProvider.class, method = "selectAllVadio")
List 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语句

你可能感兴趣的:(mybatis)