|  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class ErpSqlServer { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 数据库连接 | 
|---|
|  |  |  | //    private Connection conn; | 
|---|
|  |  |  | // 创建预编译语句对象,一般都是用这个而不用Statement | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return list; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 扫描所有实力类属性里的TableField注解,并将里面的值作为column | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param cls | 
|---|
|  |  |  | * @param <T> | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public <T> String selectFrontPart(Class<T> cls){ | 
|---|
|  |  |  | public <T> String selectFrontPart(Class<T> cls) { | 
|---|
|  |  |  | String tableName = cls.getDeclaredAnnotation(TableName.class).value(); | 
|---|
|  |  |  | List<HashMap<String,String>> columnAndField = new ArrayList<>(); | 
|---|
|  |  |  | List<HashMap<String, String>> columnAndField = new ArrayList<>(); | 
|---|
|  |  |  | String sql = "SELECT "; | 
|---|
|  |  |  | if (Cools.isEmpty(tableName)) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | 
|---|
|  |  |  | for (Field f : allFields) { | 
|---|
|  |  |  | if (Modifier.isFinal(f.getModifiers()) | 
|---|
|  |  |  | || Modifier.isStatic(f.getModifiers()) | 
|---|
|  |  |  | || Modifier.isTransient(f.getModifiers())){ | 
|---|
|  |  |  | || Modifier.isTransient(f.getModifiers())) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String column = null; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String name = f.getName(); | 
|---|
|  |  |  | HashMap<String, String> container = new HashMap<>(); | 
|---|
|  |  |  | container.put(column,name); | 
|---|
|  |  |  | container.put(column, name); | 
|---|
|  |  |  | columnAndField.add(container); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (int i = 0; i < columnAndField.size(); i++) { | 
|---|
|  |  |  | HashMap<String, String> stringStringHashMap = columnAndField.get(i); | 
|---|
|  |  |  | if (i == columnAndField.size() - 1){ | 
|---|
|  |  |  | if (i == columnAndField.size() - 1) { | 
|---|
|  |  |  | for (String s : stringStringHashMap.keySet()) { | 
|---|
|  |  |  | sql = sql + s + " AS " + stringStringHashMap.get(s); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | for (String s : stringStringHashMap.keySet()) { | 
|---|
|  |  |  | sql = sql + s + " AS " + stringStringHashMap.get(s) + ", "; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | sql = sql + " FROM " + tableName; | 
|---|
|  |  |  | return sql; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String addWhere(String sql, Map<String,String> condition){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String addWhere(String sql, Map<String, String> condition) { | 
|---|
|  |  |  | int conditionSize = 1; | 
|---|
|  |  |  | sql = sql + " WHERE "; | 
|---|
|  |  |  | for (String s : condition.keySet()) { | 
|---|
|  |  |  | if (conditionSize == condition.keySet().size()){ | 
|---|
|  |  |  | if (conditionSize == condition.keySet().size()) { | 
|---|
|  |  |  | sql = sql + s + " = " + condition.get(s); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | sql = sql + s + " = " + condition.get(s) + " and "; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | conditionSize = conditionSize + 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return sql; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * map的键是列名, 值等同于值 | 
|---|
|  |  |  | * key: id, value: 1 等同于 WHERE id = 1 | 
|---|
|  |  |  | * 如果要查询字符串需要自行加上'' | 
|---|
|  |  |  | * key:name, value: 'zhs'等同于 WHERE name = 'zhs' | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param cls | 
|---|
|  |  |  | * @param condition | 
|---|
|  |  |  | * @param <T> | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public <T> List<T> selectList(Class<T> cls, Map<String,String> condition){ | 
|---|
|  |  |  | public <T> List<T> selectList(Class<T> cls, Map<String, String> condition) { | 
|---|
|  |  |  | String sql = selectFrontPart(cls); | 
|---|
|  |  |  | String finalSQL = addWhere(sql, condition); | 
|---|
|  |  |  | return select(finalSQL,cls); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public <T> List<T> selectAll(Class<T> cls){ | 
|---|
|  |  |  | return select(finalSQL, cls); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public <T> List<T> selectAll(Class<T> cls) { | 
|---|
|  |  |  | String sql = selectFrontPart(cls); | 
|---|
|  |  |  | return select(sql,cls); | 
|---|
|  |  |  | return select(sql, cls); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public List<Map<String, Object>> select(String sql) { | 
|---|
|  |  |  | 
|---|
|  |  |  | return executeUpdate(sql); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public <T> int delete(Class<T> cls, Map<String,String> condition) { | 
|---|
|  |  |  | public <T> int delete(Class<T> cls, Map<String, String> condition) { | 
|---|
|  |  |  | String tableName = cls.getDeclaredAnnotation(TableName.class).value(); | 
|---|
|  |  |  | if (Cools.isEmpty(tableName)) { | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | 
|---|
|  |  |  | String finalSQL = addWhere(sql, condition); | 
|---|
|  |  |  | return executeUpdate(finalSQL); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public <T> int insert(Class<T> cls, Map<String,Object> condition){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public <T> int insert(Class<T> cls, Map<String, Object> condition) { | 
|---|
|  |  |  | String tableName = cls.getDeclaredAnnotation(TableName.class).value(); | 
|---|
|  |  |  | if (Cools.isEmpty(tableName)) { | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | 
|---|
|  |  |  | String sql = "INSERT INTO " + tableName + " ("; | 
|---|
|  |  |  | int conditionSize = 1; | 
|---|
|  |  |  | for (String s : condition.keySet()) { | 
|---|
|  |  |  | if (conditionSize == condition.keySet().size()){ | 
|---|
|  |  |  | sql = sql +s+")"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | if (conditionSize == condition.keySet().size()) { | 
|---|
|  |  |  | sql = sql + s + ")"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | sql = sql + s + ","; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | conditionSize = conditionSize + 1; | 
|---|
|  |  |  | 
|---|
|  |  |  | sql = sql + " VALUES("; | 
|---|
|  |  |  | int valuesSize = 1; | 
|---|
|  |  |  | for (String s : condition.keySet()) { | 
|---|
|  |  |  | if (valuesSize == condition.keySet().size()){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sql = sql + condition.get(s)+")"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | if (valuesSize == condition.keySet().size()) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sql = sql + condition.get(s) + ")"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | sql = sql + condition.get(s) + ","; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | valuesSize = valuesSize + 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return executeUpdate(sql); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*****************************************************************************/ | 
|---|
|  |  |  | /*********************************   核心层   *********************************/ | 
|---|
|  |  |  | /*****************************************************************************/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private List<Map<String, Object>> executeQuery(String sql) { | 
|---|
|  |  |  | Connection conn = null; | 
|---|
|  |  |  | 
|---|
|  |  |  | Connection conn = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | conn = getConn(); | 
|---|
|  |  |  | if(null != conn) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (null != conn) { | 
|---|
|  |  |  | pstm = conn.prepareStatement(sql); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.error("更新ERP中间表失败===>>数据库连接conn为空"); | 
|---|