其他分享
首页 > 其他分享> > Mybatis @SelectProvider注解详解

Mybatis @SelectProvider注解详解

作者:互联网

@SelectProvider(type=xxxx.class,method=”xxxx”)
个人理解:

 用自定义的provider类构造SQL语句

属性详解:

type 属性用于指定获取sql语句的指定类

method 属性用于指定类中要执行获取sql语句的方法

例1(单个参数):
mapper中

@SelectProvider(type=BaseUserProvider.class,method="selectUserById")
public BaseUser selectById(@Param(value="id")Integer id);

例1注意:
当mapper中传入的参数是使用@param 注解修饰,在xxxProvider类中必须使用Map对象接收参数。

BaseUserProvider类中

public String selectUserById(Map<String, Object> para){
    return new SQL(){{
        SELECT("*");
        FROM("base_user");
        WHERE("id="+para.get("id"));
    }}.toString();
}

此时:以上代码是借助org.apache.ibatis.jdbc.SQL类 使用固定的select from where 格式,也可以直接使用return “select * from base_user where id =” +para.get(“id”); 来实现sql拼接

例2(多个参数并加入if判断):

public String selectUserById(Map<String, Object> para){
        return new SQL(){{
            SELECT("*");
            FROM("base_user");
            WHERE("id="+para.get("id"));
            if(StringUtils.isNotBlank((String)para.get("username"))){
                WHERE("username="+para.get("username"));
            }
        }}.toString();
    }

注意:
此时的sql写法在拼接sql中不需要在使用 and 进行连接 ,在where 方法中已拼入where 源码如下:

      private static final String AND = ") \nAND (";
      private static final String OR = ") \nOR (";

标签:String,para,get,SQL,详解,sql,Mybatis,SelectProvider,id
来源: https://blog.csdn.net/MaNong125/article/details/122261998