public static Object convertToSequence( ISelectable column, Object value, Parameters parameterSettings) { if (column.isAutoIncrement() && !(value instanceof ISequenceVal)) { // 处理自增 if (value == null || value instanceof NullValue) { // 识别null值 return buildSequenceVal(column); } else if (value instanceof IBindVal) { Object cvalue = ((IBindVal) value).copy(); // 识别绑定变量 if (parameterSettings != null && parameterSettings.isBatch()) { // boolean isAllNull = true; // boolean existNull = false; // for (int i = 0; i < parameterSettings.getBatchSize(); // i++) { // Object bvalue = ((IBindVal) // value).assignment(parameterSettings.cloneByBatchIndex(i)); // if (bvalue instanceof IBindVal) { // bvalue = ((IBindVal) bvalue).getValue(); // } // // existNull |= (bvalue == null || bvalue instanceof // NullValue); // isAllNull &= (bvalue == null || bvalue instanceof // NullValue); // } // // if (existNull && !isAllNull) {// 部分出现null // throw new // OptimizerException("auto_increment only support all null values"); // } else if (isAllNull) { // return buildSequenceVal(column); // } Object bvalue = ((IBindVal) cvalue).assignment(parameterSettings.cloneByBatchIndex(0)); // 可能batch模式,还是返回bindVal对象 if (bvalue instanceof IBindVal) { bvalue = ((IBindVal) bvalue).getValue(); } if (bvalue == null || bvalue instanceof NullValue) { return buildSequenceVal(column); } } else { Object bvalue = ((IBindVal) cvalue).assignment(parameterSettings); // 可能batch模式,还是返回bindVal对象 if (bvalue instanceof IBindVal) { bvalue = ((IBindVal) bvalue).getValue(); } if (bvalue == null || bvalue instanceof NullValue) { return buildSequenceVal(column); } } } } return value; }