MYSQL学习

MySQL添加唯一索引避免重复

2018-10-11  本文已影响141人  唐T唐X

在很多情况下,如果我们要往MySQL的表中添加数据,需要做判断是否有重复数据的操作。如果这次要添加的数据在之前就已经存在了,那这次就不会添加并告知调用方;如果不存在,那就添加。
今天要分享的就是利用MySQL添加唯一索引来实现上述功能。
首先,我们需要设置唯一索引:


image.png

如上表,我们需要给group_name这一列添加唯一索引,使之后再添加存在的group_name时会报重复信息。在这里我给大家展示如何使用Navicat来设置(网上大部分都是直接用命令,看大家习惯吧)


image.png
如上图,在Navicat的设计表中添加我们需要的索引即可,然后保存,唯一索引就建好了。
接下来就是验证唯一索引是否管用了,直接上代码:
Dao文件
    // 增加团队
    public int addGroup(Group group) {
        int resultID;
        try {
            resultID = jdbcTemplate.update("insert into interface_groups(group_name, creator, status, create_Time) values(?,?,?,?)",
                    group.getGroupName(), group.getGroupCreator(), group.getGroupStatus(), DateUtil.timeStamp2Date(DateUtil.timeStamp(),"yyyy-MM-dd HH:mm:ss"));

        } catch(DuplicateKeyException e){
            resultID = 2;
        } catch(Exception e){
            resultID = 0;
        }
        return resultID;
    }

Service文件

    @Autowired
    private GroupsDao groupsDao;

    public int addGroup(Group group) {
        return groupsDao.addGroup(group);
    }

Controller文件

    @PostMapping("/interface/group/{group_name}/{group_creator}")
    public String addGroup(@PathVariable(value = "group_name") String group_name,
                      @PathVariable(value = "group_creator") String group_creator){
        Group group = new Group(group_name, group_creator, 1);
        int resultID = groupsService.addGroup(group);
        JSONObject result = new JSONObject();

        switch(resultID){
            case 1:
                result.put("result", true);
                logger.info("Create group " + group_name + " from " + group_creator + " successfully!");
                break;
            case 2:
                result.put("result", false);
                result.put("reason", "插入团队重复!");
                logger.info("Create group " + group_name + " from " + group_creator + " fail!");
                break;
            default:
                result.put("result", false);
                result.put("reason", "插入团队失败!");
                logger.info("Create group " + group_name + " from " + group_creator + " fail!");
                break;
        }
        return result.toJSONString();
    }

上述代码大家只关心dao文件和controller文件即可,从controller请求结果就能验证唯一索引是否管用。我们用Postman请求下:
第一次请求:


image.png

第二次请求:


image.png
完美!
上一篇 下一篇

猜你喜欢

热点阅读