From 6ea0b9b60bbe49e7793a06c22c9cd22ad96e3d1a Mon Sep 17 00:00:00 2001 From: calmcc Date: Thu, 17 Oct 2024 16:09:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AF=B9=E6=9F=90=E4=BA=9B=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E8=BE=93=E5=87=BAnull=E5=80=BC=E5=AD=97=E6=AE=B5=E7=9A=84?= =?UTF-8?q?=E9=9C=80=E6=B1=82=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=BE=93=E5=87=BA?= =?UTF-8?q?null=E5=80=BC=E7=9A=84=E5=BC=80=E5=85=B3=20=E5=9C=A8=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E5=87=BD=E6=95=B0=E5=A2=9E=E5=8A=A0=E8=BF=99=E4=B8=A4?= =?UTF-8?q?=E5=8F=A5=20JSON.DEFAULT=5FGENERATE=5FFEATURE=20|=3D=20Serializ?= =?UTF-8?q?erFeature.WriteMapNullValue.getMask();=20AbstractSQLExecutor.EN?= =?UTF-8?q?ABLE=5FOUTPUT=5FNULL=5FCOLUMN=20=3D=20true;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APIJSONORM/src/main/java/apijson/JSON.java | 3 +- .../java/apijson/orm/AbstractSQLExecutor.java | 43 ++++++++----------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/APIJSONORM/src/main/java/apijson/JSON.java b/APIJSONORM/src/main/java/apijson/JSON.java index 48b80aac4..d7854aae1 100755 --- a/APIJSONORM/src/main/java/apijson/JSON.java +++ b/APIJSONORM/src/main/java/apijson/JSON.java @@ -8,7 +8,6 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; import com.alibaba.fastjson.serializer.SerializerFeature; -import com.alibaba.fastjson.JSONReader; import java.util.List; @@ -203,7 +202,7 @@ public static String toJSONString(Object obj, SerializerFeature... features) { try { return com.alibaba.fastjson.JSON.toJSONString(obj, features); } catch (Exception e) { - Log.e(TAG, "parseArray catch \n" + e.getMessage()); + Log.e(TAG, "toJSONString catch \n" + e.getMessage()); } return null; } diff --git a/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java b/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java index 426a53ee5..36ef71ca9 100755 --- a/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java +++ b/APIJSONORM/src/main/java/apijson/orm/AbstractSQLExecutor.java @@ -5,45 +5,32 @@ package apijson.orm; +import apijson.*; +import apijson.orm.Join.On; +import apijson.orm.exception.NotExistException; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + import java.io.BufferedReader; import java.math.BigDecimal; import java.math.BigInteger; -import java.sql.Blob; -import java.sql.Clob; -import java.sql.Connection; -import java.util.*; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.SQLException; -import java.sql.Savepoint; -import java.sql.Statement; -import java.sql.Timestamp; +import java.sql.*; import java.time.DayOfWeek; import java.time.LocalDateTime; import java.time.Month; import java.time.Year; +import java.util.Date; +import java.util.*; import java.util.Map.Entry; import java.util.regex.Pattern; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; - -import apijson.JSONResponse; -import apijson.Log; -import apijson.NotNull; -import apijson.RequestMethod; -import apijson.StringUtil; -import apijson.orm.Join.On; -import apijson.orm.exception.NotExistException; - /**executor for query(read) or update(write) MySQL database * @author Lemon */ public abstract class AbstractSQLExecutor implements SQLExecutor { private static final String TAG = "AbstractSQLExecutor"; - + //是否返回 值为null的字段 + public static boolean ENABLE_OUTPUT_NULL_COLUMN = false; public static String KEY_RAW_LIST = "@RAW@LIST"; // 避免和字段命名冲突,不用 $RAW@LIST$ 是因为 $ 会在 fastjson 内部转义,浪费性能 private Parser parser; @@ -918,8 +905,14 @@ protected JSONObject onPutColumn(@NotNull SQLConfig config, @NotNull ResultSe Object value = getValue(config, rs, rsmd, tablePosition, table, columnIndex, label, childMap); // 主表必须 put 至少一个 null 进去,否则全部字段为 null 都不 put 会导致中断后续正常返回值 - if (value != null || (join == null && table.isEmpty())) { + if (value != null) { table.put(label, value); + } else{ + if (join == null && table.isEmpty()) { + table.put(label, null); + } else if (ENABLE_OUTPUT_NULL_COLUMN) { + table.put(label, null); + } } return table;