原:这里。
作用
实习项目中MyBatis中用到了@selectProvider
,功能就是用来单独写一个class类与方法,用来提供一些xml或者注解中不好写的sql。其实就是用用自定义的provider类构造SQL语句
用法
1 | type 属性用于指定获取sql语句的指定类 |
单个参数
mapper
中
1 | "selectUserById") (type=BaseUserProvider.class,method= |
注意:
当mapper中传入的参数是使用@param
注解修饰,在xxxProvider
类中必须使用Map对象接收参数。
BaseUserProvider
类中
1 | public String selectUserById(Map<String, Object> para){ |
此时:以上代码是借助org.apache.ibatis.jdbc.SQL
类 使用固定的SELECT FROM WHERE
格式,也可以直接使用return “select * from base_user where id =” + para.get(“id”);
来实现sql拼接。
多个参数
1 | public String selectUserById(Map<String, Object> para){ |
注意:
此时的sql写法在拼接sql中不需要在使用 and 进行连接 ,在where 方法中已拼入where 源码如下:
private static final String AND = ") \nAND (";
private static final String OR = ") \nOR (";
注:转载文章请注明出处,谢谢~