在使用Spring JPA的@Query注解进行数据查询时(如代码1),有时候是可以省略掉@Query注解的(如代码2)。
代码1
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where u.emailAddress = ?1")
User findByEmailAddress(String emailAddress);
}
代码2
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmailAddress(String emailAddress);
}
什么情况下可以省略@Query注解?
我进行不负责任的猜测,需要满足下面三个条件:
返回值的类型的名称需要与表名相同;
返回值的类型的字段名需要与表的列名相同;
如果方法有参数,那么方法的参数名(例如你的例子中的emailAddress)与需要表的列名相同。
总之就是:你即使不加注解,框架也能够根据已有的信息推断出来,并且推断出的结果合法。那么此时就可以省略注解。