Order order = orderService.getByOrderNum(ordernum);
if(order == null){
        orderService.save(neworder);
}else{
        msg="该工单已存在";  

在单线程下这么写肯定没问题,但是如果是并发情况下,很有可能会同时插入多条记录进数据库。

1.数据库设计表的时候给工单编号ordernum设计唯一性约束。

2.代码里双重检验加锁

Order order = orderService.getByOrderNum(ordernum);
if(order == null){
        synchronized(lock){
            Order order2 = orderService.getByOrderNum(ordernum);
            if(order2 == null){
                orderService.save(neworder);
}else{
        msg="该工单已存在";