// 批量删除 @Override public boolean deleteByIds(Class<?> clzz, String ids) { String prefix = dbConfig.getPrefix(); // 表前缀 MapConfig map = null; try { map = cache.getMapConfig(clzz); } catch (Exception e1) { e1.printStackTrace(); } StringBuilder sql = new StringBuilder(); sql.append("delete from ") .append(prefix) .append(map.getTableName()) .append(" where ") .append(map.getPrimaryKey()) .append(" in(") .append(ids) .append(")"); logger(sql.toString()); return jdbcTemplate.update(sql.toString()) > 0 ? true : false; }
// 保存对象 public boolean save(Object entity) { String prefix = dbConfig.getPrefix(); Class<?> clzz = entity.getClass(); MapConfig map = null; try { map = cache.getMapConfig(clzz); } catch (Exception e1) { e1.printStackTrace(); } // 构造SQL字符串 StringBuilder sql = new StringBuilder("insert into "); sql.append(prefix).append(map.getTableName()).append("("); StringBuilder val = new StringBuilder(" values("); Field[] fields = clzz.getDeclaredFields(); int length = fields.length; final List<Object> list = new ArrayList<Object>(length); for (int i = 0; i < length; i++) { Field field = fields[i]; String fieldName = field.getName(); if (fieldName.equals(map.getPrimaryKey())) { // 如果是主键 continue; } if ("serialVersionUID".equals(fieldName)) { continue; } String methodName = "get" + fieldName.replaceFirst( fieldName.charAt(0) + "", (char) (fieldName.charAt(0) - 32) + ""); Method me = null; try { me = clzz.getMethod(methodName); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } Object returnObject = null; try { returnObject = me.invoke(entity); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } // if (returnObject != null) { // 如果返回值为null sql.append("`" + fieldName + "`"); val.append("?"); list.add(returnObject); sql.append(","); val.append(","); } } final StringBuilder sql2 = new StringBuilder(sql.substring(0, sql.length() - 1)); StringBuilder val2 = new StringBuilder(val.substring(0, val.length() - 1)); sql2.append(")").append(val2).append(")"); KeyHolder holder = new GeneratedKeyHolder(); this.jdbcTemplate.update( new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement ps = con.prepareStatement(sql2.toString()); Object[] params = list.toArray(); for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } return ps; } }, holder); try { Method me = clzz.getMethod("setId", Integer.class); me.invoke(entity, holder.getKey().intValue()); } catch (Exception e) { e.printStackTrace(); } return true; }