redis叢集批量操作工具RedisBatchUtil
阿新 • • 發佈:2018-12-14
redis叢集批量操作工具
RedisBatchUtil package com.qzt360.data.action.sql; import com.qzt360.data.action.annotation.Exclude; import com.qzt360.data.action.annotation.Mark; import com.qzt360.data.action.annotation.TableName; import com.qzt360.data.action.annotation.Where; import com.qzt360.data.action.entity.Eqp; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; /** * @author luowuhui */ public class BatchSql { /** * * @param cla * @param condition * @param <T> * @return * @throws Exception */ public static <T> String batchSelect(Class<T> cla, List<String> condition) throws Exception { Field[] fields = cla.getDeclaredFields(); String whereFielf = null; TableName tableName = cla.getAnnotation(TableName.class); Exclude exclude = cla.getAnnotation(Exclude.class); List<String> fieldList = new ArrayList<>((int) (fields.length * 0.75)); boolean whereMark = false; if (exclude != null) { for (Field field : fields) { if (field.getAnnotation(Mark.class) == null) { fieldList.add(field.getName()); } if (!whereMark && field.getAnnotation(Where.class) != null) { whereFielf = field.getName(); whereMark = true; } } } else { List<String> fieldAll = new ArrayList<>((int) (fields.length * 0.75)); for (Field field : fields) { if (field.getAnnotation(Mark.class) != null) { fieldList.add(field.getName()); } if (!whereMark && field.getAnnotation(Where.class) != null) { whereFielf = field.getName(); whereMark = true; } fieldAll.add(field.getName()); } if (fieldList.size() == 0) { fieldList.addAll(fieldAll); } } StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder .append(getColumn(fieldList)) .append("\n") .append("<select id=\"") .append(tableName.id()) .append("\" resultType=\"") .append(cla.getName()) .append("\" parameterType=\"") .append(condition.getClass().getInterfaces()[0].getName()) .append("\">") .append("\n"); sqlBuilder .append(" select") .append(" <include refid=\"fieldAll\" />") .append(" from ") .append(tableName.name()) .append(" where") .append(whereFielf) .append(" in") .append("\n") .append(" <foreach collection=\"list\" item=\"" + whereFielf + "\" index=\"index\" open=\"(\" close=\")\" separator=\",\">") .append("\n") .append(" #{") .append(whereFielf) .append("}") .append("\n") .append("</foreach>") .append("\n") .append("</select>"); return sqlBuilder.toString(); } private static String getColumn(List<String> columns) { if (columns == null) { return ""; } StringBuilder sqlColumn = new StringBuilder(); columns.forEach(column -> sqlColumn.append(",").append(column)); sqlColumn.delete(0, 1); sqlColumn.insert(0, "<sql id=\"fieldAll\">"); sqlColumn.append("</sql>"); return sqlColumn.toString(); } public static void main(String[] args) throws Exception { System.out.println( batchSelect(Eqp.class, new ArrayList<>())); } }