mybatis内置类型

MyBatis 本身并不直接定义数值类型,而是通过 Java 的类型系统来处理数值类型,并通过类型处理器(TypeHandler)将 Java 类型与数据库中的 SQL 类型进行映射。因此,MyBatis 支持的数值类型主要取决于 Java 中的数值类型,包括基本数据类型及其对应的包装类。 ### 常见的 Java 数值类型在 MyBatis 中的应用 以下是一些常见的 Java 数值类型以及它们在 MyBatis 映射文件中的使用方式: #### 1. 整数类型 Java 提供了多种整数类型,包括 `byte`、`short`、`int` 和 `long`,它们对应的包装类分别为 `Byte`、`Short`、`Integer` 和 `Long`。 在 MyBatis 的映射文件中,可以通过 `<result>` 或 `<id>` 标签将数据库字段映射到这些类型。例如: ```xml <resultMap id="demoResultMap" type="com.example.Demo"> <id property="id" column="id" javaType="Long"/> <result property="age" column="age" javaType="Integer"/> </resultMap> ``` 上述代码将数据库字段 `id` 映射为 Java 的 `Long` 类型,字段 `age` 映射为 Java 的 `Integer` 类型[^2]。 #### 2. 浮点类型 Java 的浮点类型包括 `float` 和 `double`,其包装类为 `Float` 和 `Double`。这些类型可以用来处理数据库中的浮点数字段。 映射文件中可以如下定义: ```xml <resultMap id="priceResultMap" type="com.example.Price"> <result property="unitPrice" column="unit_price" javaType="Double"/> <result property="discount" column="discount" javaType="Float"/> </resultMap> ``` 上述代码将数据库字段 `unit_price` 映射为 Java 的 `Double` 类型,字段 `discount` 映射为 Java 的 `Float` 类型。 #### 3. 大数类型 对于需要更高精度的数值类型(如金融计算),可以使用 `BigDecimal` 或 `BigInteger`。这些类型在处理数据库中的 `DECIMAL` 或 `NUMERIC` 类型时非常有用。 ```xml <resultMap id="financialResultMap" type="com.example.Financial"> <result property="amount" column="amount" javaType="BigDecimal"/> </resultMap> ``` 上述代码将数据库字段 `amount` 映射为 Java 的 `BigDecimal` 类型,以确保高精度计算的需求。 #### 4. 布尔类型 虽然布尔类型不是数值类型,但在某些场景下可能需要将数据库中的布尔值映射到 Java 的 `boolean` 或 `Boolean` 类型。 ```xml <resultMap id="flagResultMap" type="com.example.Flag"> <result property="isActive" column="is_active" javaType="Boolean"/> </resultMap> ``` 上述代码将数据库字段 `is_active` 映射为 Java 的 `Boolean` 类型。 ### 类型处理器(TypeHandler) MyBatis 内置了许多类型处理器来处理 Java 类型与数据库类型的转换。例如: - `IntegerTypeHandler` 用于处理 `int` 和 `Integer`。 - `LongTypeHandler` 用于处理 `long` 和 `Long`。 - `DoubleTypeHandler` 用于处理 `double` 和 `Double`。 - `BigDecimalTypeHandler` 用于处理 `BigDecimal`。 如果需要自定义类型处理器,可以通过继承 `BaseTypeHandler` 实现。例如: ```java public class CustomIntegerTypeHandler extends BaseTypeHandler<Integer> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Integer parameter, JdbcType jdbcType) throws SQLException { ps.setInt(i, parameter); } @Override public Integer getNullableResult(ResultSet rs, String columnName) throws SQLException { return rs.getObject(columnName, Integer.class); } @Override public Integer getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return rs.getObject(columnIndex, Integer.class); } @Override public Integer getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return cs.getObject(columnIndex, Integer.class); } } ``` 在映射文件中注册该处理器: ```xml <resultMap id="customResultMap" type="com.example.Custom"> <result property="value" column="value" typeHandler="com.example.CustomIntegerTypeHandler"/> </resultMap> ``` ### 小结 MyBatis 支持的数值类型主要依赖于 Java 的数值类型,包括整数类型、浮点类型、大数类型等。通过 `<resultMap>` 和 `TypeHandler`,可以灵活地将数据库中的数值字段映射到 Java 对象的属性中,满足不同场景的需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值