From 74dc34be8e81dd8dd42fbd66d03df9f2348554c6 Mon Sep 17 00:00:00 2001 From: Bruce Asu Date: Sat, 11 Apr 2020 18:50:11 +0800 Subject: [PATCH] Find one entity according SQL, if not found, return null, otherwise return the first one. --- .../com/github/drinkjava2/jsqlbox/DB.java | 14 +- .../com/github/drinkjava2/jsqlbox/SQL.java | 153 +++++++++++++++++- 2 files changed, 164 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/github/drinkjava2/jsqlbox/DB.java b/core/src/main/java/com/github/drinkjava2/jsqlbox/DB.java index 3984585..7ca8175 100644 --- a/core/src/main/java/com/github/drinkjava2/jsqlbox/DB.java +++ b/core/src/main/java/com/github/drinkjava2/jsqlbox/DB.java @@ -12,6 +12,7 @@ package com.github.drinkjava2.jsqlbox; import com.github.drinkjava2.jdbpro.PreparedSQL; +import com.github.drinkjava2.jdialects.springsrc.utils.CollectionUtils; import java.sql.Connection; import java.util.List; import java.util.Map; @@ -119,13 +120,22 @@ public abstract class DB extends JDBPRO {// NOSONAR //Entity series methods from DbContext public static List eFindAll(Class entityClass, Object... items) {return gctx().eFindAll(entityClass, items);} public static List eFindBySample(Object sampleBean, Object... items) {return gctx().eFindBySample(sampleBean, items);} - public static List eFindBySQL(Object... items) {return gctx().eFindBySQL(items);} + public static List eFindBySQL(Object... items) {return gctx().eFindBySQL(items);} + /** Find one entity according SQL, if not found, return null, otherwise return the first one.*/ + public static T eFindOneBySQL(Object... items) { + List objects = eFindBySQL(items); + if (CollectionUtils.isEmpty(objects)) { + return null; + } + return objects.get(0); + } public static T eInsert(T entity, Object... items) {return gctx().eInsert(entity, items);} public static T eLoad(T entity, Object... items) {return gctx().eLoad(entity, items);} public static T eLoadById(Class entityClass, Object entityId, Object... items) {return gctx().eLoadById(entityClass, entityId, items);} public static T eLoadByIdTry(Class entityClass, Object entityId, Object... items) {return gctx().eLoadByIdTry(entityClass, entityId, items);} public static T eLoadBySQL(Object... items) {return gctx().eLoadBySQL(items);} - + + public static T eUpdate(Object entity, Object... items) {return gctx().eUpdate(entity, items);} public static boolean eExist(Object entity, Object... items) {return gctx().eExist(entity, items);} public static boolean eExistById(Class entityClass, Object id, Object... items) {return gctx().eExistById(entityClass, id, items);} diff --git a/core/src/main/java/com/github/drinkjava2/jsqlbox/SQL.java b/core/src/main/java/com/github/drinkjava2/jsqlbox/SQL.java index 7c86270..8b89675 100644 --- a/core/src/main/java/com/github/drinkjava2/jsqlbox/SQL.java +++ b/core/src/main/java/com/github/drinkjava2/jsqlbox/SQL.java @@ -11,6 +11,8 @@ */ package com.github.drinkjava2.jsqlbox; +import com.github.drinkjava2.jdialects.springsrc.utils.StringUtils; + /** * SQL store some public static methods related for spell SQL, usually used for static import to * simplify programming @@ -549,5 +551,154 @@ public abstract class SQL {//NOSONAR public static final String WORK = " WORK "; public static final String WRITE = " WRITE "; public static final String YEAR = " YEAR "; - public static final String ZONE = " ZONE "; + public static final String ZONE = " ZONE "; + + // usefull function + public static String simpleReplaceDangerous(String str) { + str=str.replaceAll(";","") + .replaceAll("&","&") + .replaceAll("<","<") + .replaceAll(">",">") + .replaceAll("'","''") + .replaceAll("--","") + .replaceAll("/","") + .replaceAll("%",""); + return str; + } + public static String array(String... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (String str : arr) { + if (StringUtils.isEmpty(str) ) { + builder.append("'',"); + } else { + builder.append("'").append(simpleReplaceDangerous(str)).append("',"); + } + } + if (builder.length() > 0) { + builder.setLength(builder.length() - 1); + } + + return "(" +builder.toString() + ")"; + } + + public static String array(int... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (int i : arr) { + builder.append(i).append(','); + } + builder.setLength(builder.length() - 1); + return "(" +builder.toString() + ")"; + } + + public static String array(Integer... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (Integer i : arr) { + if (i == null ) { + continue; + } + builder.append(i).append(','); + + } + if (builder.length() > 0) { + builder.setLength(builder.length() - 1); + } + + return "(" +builder.toString() + ")"; + } + + public static String array(long... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (long i : arr) { + builder.append(i).append(','); + } + builder.setLength(builder.length() - 1); + return "(" +builder.toString() + ")"; + } + + public static String array(Long... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (Long i : arr) { + if (i == null) { + continue; + } + builder.append(i).append(','); + } + if (builder.length() > 0) { + builder.setLength(builder.length() - 1); + } + return "(" +builder.toString() + ")"; + } + + public static String array(short... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (short i : arr) { + builder.append(i).append(','); + } + builder.setLength(builder.length() - 1); + return "(" +builder.toString() + ")"; + } + + public static String array(Short... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (Short i : arr) { + if (i == null) { + continue; + } + builder.append(i).append(','); + } + if (builder.length() > 0) { + builder.setLength(builder.length() - 1); + } + return "(" +builder.toString() + ")"; + } + + public static String array(byte... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (byte i : arr) { + builder.append(i).append(','); + } + builder.setLength(builder.length() - 1); + return "(" +builder.toString() + ")"; + } + + public static String array(Byte... arr) { + if (arr == null || arr.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(200); + for (Byte i : arr) { + if (i == null) { + continue; + } + builder.append(i).append(','); + } + if (builder.length() > 0) { + builder.setLength(builder.length() - 1); + } + return "(" +builder.toString() + ")"; + } } \ No newline at end of file -- Gitee