所以我有一个简单的UsersDao
public interface UserDao extends JpaRepository<User, Long> {
}
在我的用户控制器中,我想做这样的事情:
@RequestMapping(value = "/register",method = RequestMethod.POST)
public void addUser(@RequestBody User user) {
//How do i check if user already exist with email instead of id
// i managed to do this but can i search on something else than the id
User user1 = userDao.findOne(1);
if (user.getEmail().equals(user1.getEmail()))
{
// And how should i give one error to the front end if the email
//already exist I'm using angular js
}
else {
userDao.save(user);
}
}
关于这个主题,我还有一些额外的问题:
下面是一些不清楚的地方。我做了一个关于jpa的小教程,但是他们在那里用途:
实体管理器、实体事务
注意:使用EntityManagerFactory时,它如下所示:
EntityManagerFactory emf = null,
//Then they use EntityManagerFactory
emf = Persistence.createEntityManagerFactory("SomeValue")
//where can i get "someValue" When using application .properties
//because in the example they use xml but can't find the right properties in application.properties
或者我不需要在springboot中使用这些
很抱歉问了这么多问题,我真的很想进入Spring,但有些事情现在还不太清楚;)
4条答案
按热度按时间w3nuxt5m1#
您可以执行以下操作:
假设
User
有一个属性email
,在接口中定义一个方法,生成一个动态查询,如下所示:然后,您可以通过email查找用户。如果返回
null
,则不存在具有给定email的用户。此外,在User
实体类中,您可以定义一个注解以确保email
是唯一的,如下所示:fxnxkyjh2#
您有两个选项:
1.在存储库接口中使用方法
User findByEmail(String email);
。1.使用像
@Query("SELECT COUNT(u.id) FROM User u WHERE u.email=:email) Long countUsersWithEmail(String email);
这样的方法。如何使用这些查询的结果是显而易见的。我会使用第二选择,因为开销较小。aiazj4mn3#
这实际上可以通过两种不同的方式来实现。虽然@ufuoma的解决方案是有效的,但Spring有更灵活的exists和Optional。我将给予每种方法的代码示例。在repository接口中,我们将使用这些方法
那么在您的服务课程中,我们将
那么在控制器类中,我们将有
或
现有方法是最优选,因为它更快
uqcuzwp84#
您可以使用exists关键字任意组合