使用java从mysql中的bit(2)列存储和检索值

Posted

技术标签:

【中文标题】使用java从mysql中的bit(2)列存储和检索值【英文标题】:Store and retrive value from bit(2) column in mysql using java 【发布时间】:2020-11-07 06:21:49 【问题描述】:

我需要添加类似的值 0 - 活动, 1 - 不活动, 2 - 出院

在我的数据库中,我使用的列数据类型是bit(2) 我可以将它存储在数据库中 使用枚举

这是我的枚举

public enum Status 
  ACTIVE,
  INACTIVE,
  DISCHARGED

我可以使用Status.ACTIVE.ordinal() 将值存储在数据库中,但无法从数据库中获取值。

如何在 java 中从数据库中获取值?

【问题讨论】:

你必须创建一个转换器thorben-janssen.com/jpa-21-how-to-implement-type-converter 从数据库中检索序数值并使用 Status.values()[ordinal] 转换为枚举。 【参考方案1】:

快速回复:https://spring.io/guides/gs/accessing-data-jpa/

完整答案:

将 jpa 和 mysql-connector 依赖添加到您的 pom.xml 文件中:

<!-- JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- MySQL connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

之后,您应该创建扩展 CrudRepository 的接口(例如 SomeDataRepository)。

public interface SomeDataRepository extends CrudRepository<Status, Integer> 

然后你从数据库中获取数据就变得很容易了(也和其他使用 db 的工作一样):

@Autowired
SomeDataRepository someDataRepository;
public List<Status> getData() 
    return someDataRepository.findAll();

【讨论】:

感谢您的回答,但这不是我想要的。我需要从数据库中获取位值并将其与枚举进行比较。我总是收到错误【参考方案2】:

要从数据库中将bit(2) 列的值作为integer 获取,我们需要使用CAST() 函数

SELECT CAST(colName AS unsigned int) as aliasName FROM tableName

【讨论】:

以上是关于使用java从mysql中的bit(2)列存储和检索值的主要内容,如果未能解决你的问题,请参考以下文章

MySql数据库类型bit等与JAVA中的对应类型布尔类型怎么存

(MySQL常用语法大总结(复习篇)

MySQL ODBC 存储过程结果缺少列

Ms sql 2005 中的bit 数据类型

从java中的mysql存储过程中获取参数

我想用 Sequelize 将 MySQL 中的对象数组存储在单个列中