Exemple #1
0
  public ENTITY create(ENTITY entity, InsertOption option) {

    // 如果空值则返回
    if (entity == null) {
      recordLog(" param entity is null!");
      return null;
    }

    // 如果需要DAO层代理生成新ID
    if (sequenceName != null) {
      entity.setId(getNextId());
    }

    // 判断是否为自动设置的ID
    KEY key = entity.getId();
    boolean autoGeneratedKey =
        (Number.class.isAssignableFrom(orMapping.getKeyClass())
            && (key == null || (Long.parseLong(key.toString()) == 0)));

    // 获取insert语句
    @SuppressWarnings("unchecked")
    Query query = queryGenerater.getCreateQuery(autoGeneratedKey, false, option, entity);
    final String sql = query.getSql();
    final List<Object> params = query.getParams();

    // 如果非自动生成key则返回
    if (!autoGeneratedKey) {
      int rowCount = executeSQL(sql, params);
      return rowCount == 1 ? entity : null;

      // 如果自动生成key,生成KeyHolder
    } else {
      return createAndFetchKey(entity, sql, params);
    }
  }