@Select注解的目的是为了取代xml中的select标签,只作用于方法上面。下面看一下@Select注解的源码介绍:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Select
{
String[] value();
}
从上述可以看到两点信息:
(1)@Select注解只能修饰方法
(2)@Select注解的值是字符数组。
所以,@Select注解的用法是这样的:
@Select({ "select * from xxx", "select * from yyy" })
Person selectPersonById(Integer id);
虽然@Select注解的值是字符数组,但是真正生效的应该是最后那条SQL语句。这一点请大家要留意一下。
普通的字符串值,只能实现变量的替换功能,如下所示,
@Select("select * from t_person where id = #{id}")
Person selectPersonById(Integer id);
如果要想实现复杂的逻辑判断,则需要使用标签,如下所示:
@Select(" select * from t_person where id = #{id}
and address = #{address}
")
Person selectPersonById(Integer id);
其实,标签并非是@Select注解专用的,其他的注解,例如@Insert,@Update等等,都可以使用的。
关注微信公众号获取更多VSCode编程信息,定时发布干货文章
全部评论