为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

SMILET 2021-11-11 15:52:46
我想插入唯一的电子邮件,并希望以类似于电子邮件已存在的形式显示消息。当我保存新记录时,它应该返回一些响应,告诉它已经存在于表中。模型类@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;}
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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

只需捕获这些异常并返回您的错误消息。


查看完整回答
反对 回复 2021-11-11
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

如果您使用的是 hibernate 或 jpa,您可以像下面这样使用。unique=true 确保电子邮件列值是唯一的。


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

private String email;

否则你必须添加一个方法来检查这个


if(userService.findUserByEmail() != null) {

 // User already exists

}


查看完整回答
反对 回复 2021-11-11
  • 2 回答
  • 0 关注
  • 251 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信