【问题标题】:how to get Set data type from mysql to java如何从mysql到java获取Set数据类型
【发布时间】:2015-11-24 15:34:40
【问题描述】:

所以这是我的问题。我在 mysql DB 中创建了一个包含 SET 数据类型列的表。 我想获取此 (SET) 列的值。

我已完成所有连接配置,并且我的代码一切正常。

如何在Set java对象中获取带有resultSet的Set dataType????

我试过了。

Java bean 代码

public class Valeur {
private Long id;
private Set categoriesValues = new HashSet();
\\getters and setters for the id and the categoriesValues
}

结果集代码

 private static Valeur map(ResultSet resultSet) throws SQLException {

        Valeur valeur = new Valeur();
        valeur.setId(resultSet.getLong("id"));
    valeur.setCategoriesValues(resultSet.getString("categoriesValues"));

        return valeur;
    }

ResultSet 适用于 id 但不适用于 Set 类型。

谢谢

【问题讨论】:

  • 我认为这是一个很好的问题。确实有一个 SET 列类型,并且没有关于如何通过 JDBC 处理的明显文档。 (dev.mysql.com/doc/refman/5.7/en/set.html)
  • 人们总是可以通过ResultSetMetaData 使用rs.getMetaData() 检索信息。

标签: java mysql jakarta-ee


【解决方案1】:

根据https://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html mysql 设置列映射到Java 字符串。

看来需要自己将返回的值拆分成Java set。

在您的示例中(未经测试):

String values = resultSet.getString("categoriesValues");
HashSet<String> valuesSet = new HashSet<>();
Collections.addAll(valuesSet , values.split(","));
valuer.setCategoriesValues(valuesSet );

【讨论】:

  • 单值转换为枚举,SET 转换为EnumSet,
【解决方案2】:

由于它没有在 java.sql.Types 中表示,我猜它有点用过,许多 RDBMS 不支持的自定义类型

话虽如此,要检索该值很可能:

ResultSet.getArray(...)

或者

ResultSet.getObject(...)

获取对象。我猜你必须手动将它打包到 java.util.Set 中(或者可能 getObject() 返回 java.util.Set?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2019-12-27
    • 2015-03-30
    • 2010-11-14
    相关资源
    最近更新 更多