php如何处理高并发情况下的db插入

2025-05-11 21:36:19
推荐回答(1个)
回答(1):

1、 我们需要接收一个外部的订单,而这个订单号是不允许重复的
2、 数据库对外部订单号没有做唯一性约束
3、 外部经常插入相同的订单,对于已经存在的订单则拒绝处理
对于这个需求,很简单我们会用下面的代码进行处理(思路:先查找数据库,如果数据库存在则直接退出,否则插入)
package com.yhj.test;

import com.yhj.dao.OrderDao;
import com.yhj.pojo.Order;

/**
* @Description:并发测试用例
* @Author YHJ create at 2011-7-7 上午08:41:44
* @FileName com.yhj.test.TestCase.java
*/
public class TestCase {
/**
* data access object class for deal order
*/
private OrderDao orderDao;

/**
* @Description:插入测试
* @param object 要插入的object实例
* @author YHJ create at 2011-7-7 上午08:43:15
* @throws Exception
*/
public void doTestForInsert(Order order) throws Exception {
Order orderInDB = orderDao.findByName(order.getOrderNo());
if(null != orderInDB)
throw new Exception("the order has been exist!");
orderDao.save(order);
}

}