MySQL添加唯一索引避免重复

在很多情况下,如果我们要往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

完美!
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,048评论 2 89
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,857评论 5 116
  • 2018.03.05 春雷一响万物长 春雨多情轻拂枝 人面桃花相映红
    云糯阅读 288评论 0 0
  • 肥胖是每个胖宝宝的烦恼,为了减肥,很多人试过不少方法,有运动的,节食的,甚至是吃药的等等,这些减肥方法确实有效,尤...
    夜子哥阅读 294评论 0 0