JdbcType类型和Java类型的对应关系

在Oracle中,非必填字段可能出现数据null,此时无法进行插入。Mybatis明文建议在映射字段数据时加上JdbcType属性,这样能保证在部分字段为空时程序不报错,相对更安全。

这里写图片描述
尊重原创,人人有责 原文直通车
在Oracle中有些字段不是必填时在用户使用的时候会出现数据null的情况。这个时候在Oracle中是无法进行插入的。

JDBC Type           Java Type  
CHAR                String  
VARCHAR             String  
LONGVARCHAR         String  
NUMERIC             java.math.BigDecimal  
DECIMAL             java.math.BigDecimal  
BIT                 boolean  
BOOLEAN             boolean  
TINYINT             byte  
SMALLINT            short  
INTEGER             INTEGER  
BIGINT              long  
REAL                float  
FLOAT               double  
DOUBLE              double  
BINARY              byte[]  
VARBINARY           byte[]  
LONGVARBINARY       byte[]  
DATE                java.sql.Date  
TIME                java.sql.Time  
TIMESTAMP           java.sql.Timestamp  
CLOB                Clob  
BLOB                Blob  
ARRAY               Array  
DISTINCT            mapping of underlying type  
STRUCT              Struct  
REF                 Ref  
DATALINK            java.net.URL[color=red][/color]

在Mybatis也明文建议在映射字段数据时需要将JdbcType属性加上。这样相对来说是比较安全的。

如:以下情况是在保证了前四种是不能为空的前提下,而后面几项为空时也不至于程序报错。

 1 <insert id="saveRole">
 2     insert into role_p values (
 3         #{roleId},
 4         #{name},
 5         #{remarks},
 6         #{orderNo},
 7         #{createBy,jdbcType=VARCHAR},
 8         #{createDept,jdbcType=VARCHAR},
 9         #{createTime,jdbcType=DATE},
10         #{updateBy,jdbcType=VARCHAR},
11         #{updateTime,jdbcType=DATE}
12     )
13 
14 </insert>
在JDBC中,数据类型之间的映射关系是数据库操作的重要基础。以下是常见的JDBC Type与Java Type的对应关系: - `CHAR`、`VARCHAR` `LONGVARCHAR` 映射到 `String` 类型。 - `NUMERIC` 以及 `DECIMAL` 映射到 `java.math.BigDecimal`。 - `BIT` 与 `BOOLEAN` 对应于布尔值类型 `boolean`。 - 数值类型如 `TINYINT` 到 `BIGINT` 分别映射为 Java 中的字节(`byte`)、短整型(`short`)、整型(`int`)长整型(`long`)。 - 浮点数相关的 `REAL`、`FLOAT` `DOUBLE` 被映射为 `float` 或 `double`。 - 二进制数据类型 `BINARY`、`VARBINARY` `LONGVARBINARY` 被映射为字节数组(`byte[]`)。 - 时间日期类型 `DATE`、`TIME` `TIMESTAMP` 对应于 `java.sql.Date`、`java.sql.Time` `java.sql.Timestamp`。 - 大对象类型如 `CLOB` `BLOB` 映射为 `Clob` `Blob`。 - 其他复杂类型如 `ARRAY`、`DISTINCT`、`STRUCT`、`REF` 等也有相应的Java类型或接口[^1]。 对于MySQL数据库来说,这些映射规则同样适用,并且还提供了额外的注释说明,例如`tinyint`被用作布尔类型的表示,而`timestamp`则用于存储更复杂的日期时间信息,尽管其格式可能并不严格遵循标准的时间戳格式。 如果需要查看具体的CRUD操作实例或者MyBatis框架中的具体应用,请提供更多的上下文信息以便给出针对性的例子。 ```python # 示例代码:使用JDBC插入一条记录 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class JdbcExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; String user = "username"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { String sql = "INSERT INTO users (name, email, age) VALUES (?, ?, ?)"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setString(1, "John Doe"); // VARCHAR -> String pstmt.setString(2, "john@example.com"); pstmt.setInt(3, 30); // INTEGER -> int pstmt.executeUpdate(); } } catch (Exception e) { e.printStackTrace(); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值