省略@Query注解

在使用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注解?

阅读 3.5k
2 个回答

我进行不负责任的猜测,需要满足下面三个条件:

  • 返回值的类型的名称需要与表名相同;

  • 返回值的类型的字段名需要与表的列名相同;

  • 如果方法有参数,那么方法的参数名(例如你的例子中的emailAddress)与需要表的列名相同。

总之就是:你即使不加注解,框架也能够根据已有的信息推断出来,并且推断出的结果合法。那么此时就可以省略注解。

新手上路,请多包涵

还可以省略注解?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题