| | |
| | | @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为空"); |