From 7522e79f7db5a78cfd09485c20ece69171f3b139 Mon Sep 17 00:00:00 2001 From: redkale Date: Sun, 3 Dec 2023 22:52:19 +0800 Subject: [PATCH] =?UTF-8?q?DataJdbcSource=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/redkale/asm/AsmDepends.java | 1 + .../org/redkale/source/DataJdbcSource.java | 24 ++--------- src/main/java/org/redkale/util/Utility.java | 42 +++++++++---------- 3 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/main/java/org/redkale/asm/AsmDepends.java b/src/main/java/org/redkale/asm/AsmDepends.java index 86ef3c84e..e0fcf8c8e 100644 --- a/src/main/java/org/redkale/asm/AsmDepends.java +++ b/src/main/java/org/redkale/asm/AsmDepends.java @@ -22,4 +22,5 @@ import static java.lang.annotation.RetentionPolicy.*; @Retention(SOURCE) public @interface AsmDepends { + Class[] value() default {}; } diff --git a/src/main/java/org/redkale/source/DataJdbcSource.java b/src/main/java/org/redkale/source/DataJdbcSource.java index d312a97e1..fb8abfe4d 100644 --- a/src/main/java/org/redkale/source/DataJdbcSource.java +++ b/src/main/java/org/redkale/source/DataJdbcSource.java @@ -1082,7 +1082,6 @@ public class DataJdbcSource extends AbstractDataSqlSource { private int updateEntityDBStatement(List stmtsRef, final SourceConnection conn, final EntityInfo info, T... entitys) throws SQLException { final long s = System.currentTimeMillis(); String presql = null; - String caseSql = null; PreparedStatement prestmt = null; List prestmts = null; Map> prepareInfos = null; @@ -1090,25 +1089,8 @@ public class DataJdbcSource extends AbstractDataSqlSource { final Attribute[] attrs = info.updateAttributes; try { if (info.getTableStrategy() == null) { - caseSql = info.getUpdateQuestionPrepareCaseSQL(entitys); - if (caseSql == null) { - presql = info.getUpdateQuestionPrepareSQL(entitys[0]); - prestmt = prepareUpdateEntityStatement(conn, presql, info, entitys); - } else { - presql = caseSql; - prestmt = conn.prepareUpdateStatement(presql); - int len = entitys.length; - final Attribute primary = info.getPrimary(); - Attribute otherAttr = attrs[0]; - //UPDATE twointrecord SET randomNumber = ( CASE WHEN id = ? THEN ? WHEN id = ? THEN ? WHEN id = ? THEN ? END ) WHERE id IN (?,?,?) - for (int i = 0; i < entitys.length; i++) { - Serializable pk = primary.get(entitys[i]); - prestmt.setObject(i * 2 + 1, pk); //1 3 5 - prestmt.setObject(i * 2 + 2, getEntityAttrValue(info, otherAttr, entitys[i])); //2 4 6 - prestmt.setObject(len * 2 + i + 1, pk); //7 8 9 - } - prestmt.addBatch(); - } + presql = info.getUpdateQuestionPrepareSQL(entitys[0]); + prestmt = prepareUpdateEntityStatement(conn, presql, info, entitys); int c1 = 0; int[] pc = prestmt.executeBatch(); for (int p : pc) { @@ -1189,7 +1171,7 @@ public class DataJdbcSource extends AbstractDataSqlSource { } } - if (info.isLoggable(logger, Level.FINEST) && caseSql == null) { //打印调试信息 + if (info.isLoggable(logger, Level.FINEST)) { //打印调试信息 Attribute primary = info.getPrimary(); if (info.getTableStrategy() == null) { char[] sqlchars = presql.toCharArray(); diff --git a/src/main/java/org/redkale/util/Utility.java b/src/main/java/org/redkale/util/Utility.java index c98f169b1..a25934975 100644 --- a/src/main/java/org/redkale/util/Utility.java +++ b/src/main/java/org/redkale/util/Utility.java @@ -3394,67 +3394,67 @@ public final class Utility { * * @return 对象 */ - @AsmDepends + @AsmDepends(Copier.class) public static T convertValue(Type type, Object value) { if (type == null || value == null) { return (T) value; } - final Class clazz = TypeToken.typeToClass(type); - final Class vclzz = value.getClass(); - if (clazz == vclzz || clazz.isAssignableFrom(vclzz)) { + final Class typeClazz = TypeToken.typeToClass(type); + final Class valClazz = value.getClass(); + if (typeClazz == valClazz || typeClazz.isAssignableFrom(valClazz)) { return (T) value; - } else if (clazz == String.class) { + } else if (typeClazz == String.class) { return (T) value.toString(); - } else if (clazz == double.class || clazz == Double.class) { + } else if (typeClazz == double.class || typeClazz == Double.class) { if (value instanceof Number) { return (T) (Number) ((Number) value).doubleValue(); - } else if (vclzz == String.class) { + } else if (valClazz == String.class) { return (T) (Number) Double.parseDouble(value.toString()); } - } else if (clazz == float.class || clazz == Float.class) { + } else if (typeClazz == float.class || typeClazz == Float.class) { if (value instanceof Number) { return (T) (Number) ((Number) value).floatValue(); - } else if (vclzz == String.class) { + } else if (valClazz == String.class) { return (T) (Number) Float.parseFloat(value.toString()); } - } else if (clazz == long.class || clazz == Long.class) { + } else if (typeClazz == long.class || typeClazz == Long.class) { if (value instanceof Number) { return (T) (Number) ((Number) value).longValue(); - } else if (vclzz == String.class) { + } else if (valClazz == String.class) { return (T) (Number) Long.parseLong(value.toString()); } - } else if (clazz == int.class || clazz == Integer.class) { + } else if (typeClazz == int.class || typeClazz == Integer.class) { if (value instanceof Number) { return (T) (Number) ((Number) value).intValue(); - } else if (vclzz == String.class) { + } else if (valClazz == String.class) { return (T) (Number) Integer.parseInt(value.toString()); } - } else if (clazz == short.class || clazz == Short.class) { + } else if (typeClazz == short.class || typeClazz == Short.class) { if (value instanceof Number) { return (T) (Number) ((Number) value).shortValue(); - } else if (vclzz == String.class) { + } else if (valClazz == String.class) { return (T) (Number) Short.parseShort(value.toString()); } - } else if (clazz == char.class || clazz == Character.class) { + } else if (typeClazz == char.class || typeClazz == Character.class) { if (value instanceof Number) { char ch = (char) ((Number) value).intValue(); return (T) (Object) ch; } - } else if (clazz == byte.class || clazz == Byte.class) { + } else if (typeClazz == byte.class || typeClazz == Byte.class) { if (value instanceof Number) { return (T) (Number) ((Number) value).byteValue(); } - } else if (clazz == boolean.class || clazz == Boolean.class) { + } else if (typeClazz == boolean.class || typeClazz == Boolean.class) { if (value instanceof Number) { return (T) (Object) (((Number) value).intValue() > 0); } - } else if (clazz == BigInteger.class && vclzz == String.class) { + } else if (typeClazz == BigInteger.class && valClazz == String.class) { return (T) new BigInteger(value.toString()); - } else if (clazz == BigDecimal.class && vclzz == String.class) { + } else if (typeClazz == BigDecimal.class && valClazz == String.class) { return (T) new BigDecimal(value.toString()); } JsonConvert convert = JsonConvert.root(); - if (CharSequence.class.isAssignableFrom(vclzz)) { + if (CharSequence.class.isAssignableFrom(valClazz)) { return convert.convertFrom(type, value.toString()); } else { return convert.convertFrom(type, convert.convertToBytes(value));