示例#1
0
  // 100
  public SmTbProductBean save(SmTbProductBean pObject) throws SQLException {
    if (!pObject.isModified()) {
      return pObject; // should not we log something ?
    }

    Connection c = null;
    PreparedStatement ps = null;
    StringBuffer _sql = null;

    try {
      c = getConnection();
      if (pObject.isNew()) { // SAVE
        beforeInsert(pObject); // listener callback
        int _dirtyCount = 0;
        _sql = new StringBuffer("INSERT into sm_tb_product (");

        if (pObject.isPrdIdModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("prd_id");
          _dirtyCount++;
        }

        if (pObject.isPrdTypeIdModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("prd_type_id");
          _dirtyCount++;
        }

        if (pObject.isNameModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("name");
          _dirtyCount++;
        }

        if (pObject.isPriceModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("price");
          _dirtyCount++;
        }

        if (pObject.isPriceVipModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("price_vip");
          _dirtyCount++;
        }

        if (pObject.isSuplyStatusModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("suply_status");
          _dirtyCount++;
        }

        if (pObject.isFormatDescModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("format_desc");
          _dirtyCount++;
        }

        if (pObject.isDetailDescModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("detail_desc");
          _dirtyCount++;
        }

        if (pObject.isSendAreaModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("send_area");
          _dirtyCount++;
        }

        if (pObject.isSendDescModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("send_desc");
          _dirtyCount++;
        }

        if (pObject.isPrdPicFileModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("prd_pic_file");
          _dirtyCount++;
        }

        if (pObject.isOwnerModified()) {
          if (_dirtyCount > 0) {
            _sql.append(",");
          }
          _sql.append("owner");
          _dirtyCount++;
        }

        _sql.append(") values (");
        if (_dirtyCount > 0) {
          _sql.append("?");
          for (int i = 1; i < _dirtyCount; i++) {
            _sql.append(",?");
          }
        }
        _sql.append(")");

        ps =
            c.prepareStatement(
                _sql.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        _dirtyCount = 0;

        if (pObject.isPrdIdModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPrdId());
        }

        if (pObject.isPrdTypeIdModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPrdTypeId());
        }

        if (pObject.isNameModified()) {
          ps.setString(++_dirtyCount, pObject.getName());
        }

        if (pObject.isPriceModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPrice());
        }

        if (pObject.isPriceVipModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPriceVip());
        }

        if (pObject.isSuplyStatusModified()) {
          ps.setString(++_dirtyCount, pObject.getSuplyStatus());
        }

        if (pObject.isFormatDescModified()) {
          ps.setString(++_dirtyCount, pObject.getFormatDesc());
        }

        if (pObject.isDetailDescModified()) {
          ps.setString(++_dirtyCount, pObject.getDetailDesc());
        }

        if (pObject.isSendAreaModified()) {
          ps.setString(++_dirtyCount, pObject.getSendArea());
        }

        if (pObject.isSendDescModified()) {
          ps.setString(++_dirtyCount, pObject.getSendDesc());
        }

        if (pObject.isPrdPicFileModified()) {
          ps.setString(++_dirtyCount, pObject.getPrdPicFile());
        }

        if (pObject.isOwnerModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getOwner());
        }

        ps.executeUpdate();

        if (!pObject.isPrdIdModified()) {
          PreparedStatement ps2 = null;
          ResultSet rs = null;
          try {
            ps2 = c.prepareStatement("SELECT last_insert_id()");
            rs = ps2.executeQuery();
            if (rs.next()) {
              pObject.setPrdId(Manager.getLong(rs, 1));
            } else {
              getManager().log("ATTENTION: Could not retrieve generated key!");
            }
          } finally {
            getManager().close(ps2, rs);
          }
        }

        pObject.isNew(false);
        pObject.resetIsModified();
        afterInsert(pObject); // listener callback
      } else { // UPDATE
        beforeUpdate(pObject); // listener callback
        _sql = new StringBuffer("UPDATE sm_tb_product SET ");
        boolean useComma = false;

        if (pObject.isPrdIdModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("prd_id").append("=?");
        }

        if (pObject.isPrdTypeIdModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("prd_type_id").append("=?");
        }

        if (pObject.isNameModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("name").append("=?");
        }

        if (pObject.isPriceModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("price").append("=?");
        }

        if (pObject.isPriceVipModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("price_vip").append("=?");
        }

        if (pObject.isSuplyStatusModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("suply_status").append("=?");
        }

        if (pObject.isFormatDescModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("format_desc").append("=?");
        }

        if (pObject.isDetailDescModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("detail_desc").append("=?");
        }

        if (pObject.isSendAreaModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("send_area").append("=?");
        }

        if (pObject.isSendDescModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("send_desc").append("=?");
        }

        if (pObject.isPrdPicFileModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("prd_pic_file").append("=?");
        }

        if (pObject.isOwnerModified()) {
          if (useComma) {
            _sql.append(",");
          } else {
            useComma = true;
          }
          _sql.append("owner").append("=?");
        }
        _sql.append(" WHERE ");
        _sql.append("sm_tb_product.prd_id=?");
        ps =
            c.prepareStatement(
                _sql.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        int _dirtyCount = 0;

        if (pObject.isPrdIdModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPrdId());
        }

        if (pObject.isPrdTypeIdModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPrdTypeId());
        }

        if (pObject.isNameModified()) {
          ps.setString(++_dirtyCount, pObject.getName());
        }

        if (pObject.isPriceModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPrice());
        }

        if (pObject.isPriceVipModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getPriceVip());
        }

        if (pObject.isSuplyStatusModified()) {
          ps.setString(++_dirtyCount, pObject.getSuplyStatus());
        }

        if (pObject.isFormatDescModified()) {
          ps.setString(++_dirtyCount, pObject.getFormatDesc());
        }

        if (pObject.isDetailDescModified()) {
          ps.setString(++_dirtyCount, pObject.getDetailDesc());
        }

        if (pObject.isSendAreaModified()) {
          ps.setString(++_dirtyCount, pObject.getSendArea());
        }

        if (pObject.isSendDescModified()) {
          ps.setString(++_dirtyCount, pObject.getSendDesc());
        }

        if (pObject.isPrdPicFileModified()) {
          ps.setString(++_dirtyCount, pObject.getPrdPicFile());
        }

        if (pObject.isOwnerModified()) {
          Manager.setLong(ps, ++_dirtyCount, pObject.getOwner());
        }

        if (_dirtyCount == 0) {
          return pObject;
        }

        Manager.setLong(ps, ++_dirtyCount, pObject.getPrdId());
        ps.executeUpdate();
        pObject.resetIsModified();
        afterUpdate(pObject); // listener callback
      }

      return pObject;
    } finally {
      getManager().close(ps);
      freeConnection(c);
    }
  }