新增/修改时,唯一性字段检查
一个对象,比如订单Order
有一个无意义的orderId作为唯一标识属性,还有一个有意义的订单号orderNo
orderNo也必须是唯一的,在添加修改数据的时候,就存在校验唯一性的问题
先假设有表order,保含2个字段,orderid,orderNo
1.新增
我们写一个通用的校验类,有一个check方法,参数为表名,校验的列名,列的值
CheckUnique.java
现在我们就可以通过CheckUnique.check("order","orderNo","20050501111")来校验orderNo
2.修改
修改的校验要比新增麻烦,因为修改的时候,检测orderNo当然是存在了。
在CheckUnique类添加新方法checkUpdate(String tableName, //表名
String idColName, //主键列名
String idColValue, //主键列值
String uniColName, //校验列名
String uniColVaue) //校验列值
方法内容基本和check()方法一样,只是sql语句strSql不同,strSql如下select count(1) as count from tableName t1 where t1.uniColName=uniColVaue and t1.idColName not in ( select t2.idColName from tableName t2 where t2.idColName=idColValue and t2.uniColName=uniColVaue ) order的例子 select count(1) as count from order t1 where t1.orderNo='200505001111' and t1.orderId not in ( select t2.orderId from order t2 where t2.orderId=9527 and t2.orderNo='200505001111' )