在mysql中,我们可以给字段加上唯一性限制,来保证该字段在数据表中不会重复,但在实际开发中,我们难免会遇到没有唯一限制时,还要保证新增的数据在数据库中不存在。通常思维我们会先对该数据在数据库中查一遍,如果返回的count为0,我们则进行新增操作,反之不进行新增操作。
这样的操作可以实现业务,但会对数据库进行两次操作,开销较大。我们可以通过以下代码一次操作数据库来实现业务需求。
insert into t_user (username,password)
select #{username},#{password}
from dual
where NOT EXISTS(SELECT id FROM `t_user` WHERE username=#{username})
该代码是向用户表中新增一条数据,含username,password字段,如果username字段在表中已经存在,那么不执行新增操作。
测试一下分别用传统的两次操作来执行新增和用该方法来执行新增,用时效率大大提升。