Ejemplo n.º 1
0
  // 批量删除
  @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;
  }
Ejemplo n.º 2
0
  // 保存对象
  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;
  }