猿问

如何将唯一的电子邮件插入数据库

我想插入唯一的电子邮件,并希望以类似于电子邮件已存在的形式显示消息。当我保存新记录时,它应该返回一些响应,告诉它已经存在于表中。


模型类


@PostMapping("/user")

public ModelAndView processRegistrationForm(@ModelAttribute("user") @Valid Users user, BindingResult result) {

    if (result.hasErrors()) {

        return new ModelAndView(landingPage);

    } else {

        try {

            userService.saveUser(user);

        } catch (Exception e) {

            e.printStackTrace();

        }

        return new ModelAndView("redirect:/user");

    }

}

JSP页面


<form:form action="${registerUrl}" modelAttribute="user" method="post">

    <div class="form-group">

        ...

        <c:if test="${user.userId eq null}">

            <input class="btn btn-success" type="submit" value="Register">

        </c:if>

    </div>

</form:form>

实体类


public class Users {

    @Id

    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_generator")

    @SequenceGenerator(name="users_generator", sequenceName = "SEQ_USERS", allocationSize=1)



    @Column(name="USER_ID")

    private Integer userId;


    @Column(name="LOGIN_NAME")

    private String loginName;


    @NotEmpty

    @Email

    @Column(name="MAIL_ID", unique=true)

    private String mailId;


    @NotEmpty

    @Column(name="FIRST_NAME")

    private String firstName;

}


SMILET
浏览 252回答 2
2回答

杨__羊羊

在数据库中的列上添加唯一键约束。如果您使用的是 hibernate,当您尝试插入重复的电子邮件时它会抛出ConstraintViolation异常,并且在更新时它会抛出DataIntegerityViolationException。只需捕获这些异常并返回您的错误消息。

收到一只叮咚

如果您使用的是 hibernate 或 jpa,您可以像下面这样使用。unique=true 确保电子邮件列值是唯一的。@Column(name = "email", unique=true)private String email;否则你必须添加一个方法来检查这个if(userService.findUserByEmail() != null) {&nbsp;// User already exists}
随时随地看视频慕课网APP

相关分类

Java
我要回答