Home Database Mysql Tutorial 解决Java中int不能为空而Oracle数据库中Number可以的问题

解决Java中int不能为空而Oracle数据库中Number可以的问题

Jun 07, 2016 pm 05:25 PM

在应用Hibernate开发中遇到了一个问题:Oracle数据库中某字段(Number类型)没有值(即NULL),其映射的JavaBean对应属性为int类

前言:空(NULL)和零(0)一样吗?当然不。Null表示不存在或不确定,0表示没有。
在应用Hibernate开发中遇到了一个问题:Oracle数据库中某字段(Number类型)没有值(即NULL),其映射的JavaBean对应属性为int类型。在获取数据时,提示“将NULL值赋给基本类型失败”的错误。怎么解决呢?对我这个.NET转Java的新手来说还真有点晕。

1.先来谈谈int和Integer

int永远也不会为空,因为它是primitive数据类型。初始时缺省为0,而不是null。
Integer是对象类,倒可能是null。

因此
int i1;
Integer i2;

此时
i1==0  为true
i2==0  会出错吧
i2==null为true

 

2.修改int为Integer的解决方案

将配置文件改为:

JavaBean中做以下修改:

public void setA252(Integer a252) {
  if(a252 != null){
   this.a252 = a252;
  }
  else{
   this.a252 = 0;
  }
 }

3.JDBC的解决方案

String result = rs.getString(1);

if (result != null){
a252 = Integer.parseInt(result);
}
else{
a252 = 0;
}

4.装箱、拆箱及其他

类型转换是在1.5中才有的。在明白怎么进行判断之前,,我们必须明白所谓的类型转换到底是什么东西。在1.5之前,你如果需要把一个int转换为Integer,你就必须做new Integer(intValue);这样的代码工作。因此在1.5中,Java的缔造者们认为这种方法过于低效率,因此引入了C#中的auto-boxing理念,因此你可以用类型转换的方法创造出一个Integer类实例。但是,其中的原理还是和以前一致的。因为在int类型中,永远不可能有null的取值,因此也不可能生成一个null的Integer对象。

另外可以强制转换下,也就是 (Object)int x == null;

linux

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Reduce the use of MySQL memory in Docker Reduce the use of MySQL memory in Docker Mar 04, 2025 pm 03:52 PM

This article explores optimizing MySQL memory usage in Docker. It discusses monitoring techniques (Docker stats, Performance Schema, external tools) and configuration strategies. These include Docker memory limits, swapping, and cgroups, alongside

How to solve the problem of mysql cannot open shared library How to solve the problem of mysql cannot open shared library Mar 04, 2025 pm 04:01 PM

This article addresses MySQL's "unable to open shared library" error. The issue stems from MySQL's inability to locate necessary shared libraries (.so/.dll files). Solutions involve verifying library installation via the system's package m

How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

Run MySQl in Linux (with/without podman container with phpmyadmin) Run MySQl in Linux (with/without podman container with phpmyadmin) Mar 04, 2025 pm 03:54 PM

This article compares installing MySQL on Linux directly versus using Podman containers, with/without phpMyAdmin. It details installation steps for each method, emphasizing Podman's advantages in isolation, portability, and reproducibility, but also

What is SQLite? Comprehensive overview What is SQLite? Comprehensive overview Mar 04, 2025 pm 03:55 PM

This article provides a comprehensive overview of SQLite, a self-contained, serverless relational database. It details SQLite's advantages (simplicity, portability, ease of use) and disadvantages (concurrency limitations, scalability challenges). C

Running multiple MySQL versions on MacOS: A step-by-step guide Running multiple MySQL versions on MacOS: A step-by-step guide Mar 04, 2025 pm 03:49 PM

This guide demonstrates installing and managing multiple MySQL versions on macOS using Homebrew. It emphasizes using Homebrew to isolate installations, preventing conflicts. The article details installation, starting/stopping services, and best pra

How do I configure SSL/TLS encryption for MySQL connections? How do I configure SSL/TLS encryption for MySQL connections? Mar 18, 2025 pm 12:01 PM

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

See all articles