mybatis取数据库为null的字段

在使用MyBatis框架进行数据库操作时,遇到int类型字段初始值为null的问题,直接取值会导致BindingException异常。本文介绍了一种解决方法,即将实体类对应字段改为String类型,避免异常,并在业务逻辑中自行判断空值。

数据库中存在int型的字段,但是初始值为null,mybatis取值之后就会报错,

org.apache.ibatis.binding.BindingException: Mapper method 'getSort' 
      (xx.yy.cc.DxxDAO) attempted to return null from a method with a primitive return type (int).

  解决:采用了取巧的方式,将实体类对应的该字段设置成String类型,mybatis取出来之后自动转换成string,不会报错,业务逻辑上得自己判断取出来的值为null的实际用处。

转载于:https://www.cnblogs.com/winv758241/p/6762428.html

### MyBatis查询数据库字段返回为空的解决方案 在MyBatis开发过程中,如果遇到查询结果中的某些字段始终返回`null`的情况,通常可能是由于字段映射错误、配置缺失或其他设置不当引起的。以下是几种常见的解决方法及其适用场景: #### 1. **启用下划线转驼峰命名规则** 如果数据库字段采用的是带下划线的命名方式(如`create_time`),而Java实体类中对应的属性名使用了驼峰命名法(如`createTime`),则需要在MyBatis全局配置文件中启用自动转换功能。 ```xml <configuration> <settings> <!-- 启用下划线到驼峰的自动映射 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> </configuration> ``` 此配置可以有效解决因字段名称不匹配而导致的`null`问题[^2]。 --- #### 2. **手动调整ResultMap映射关系** 当默认的自动映射无法满足需求时,可以通过自定义`ResultMap`来显式指定字段与属性之间的映射关系。例如,在Mapper XML文件中添加如下内容: ```xml <resultMap id="UserResultMap" type="com.example.User"> <id property="userId" column="user_id"/> <result property="userName" column="user_name"/> <result property="createTime" column="create_time"/> </resultMap> <select id="selectUserById" resultMap="UserResultMap"> SELECT * FROM users WHERE user_id = #{userId} </select> ``` 这种方式适用于复杂的数据结构或者字段名完全不同的情况[^3]。 --- #### 3. **检查POJO类属性是否正确** 确保Java实体类中的属性名与其getter/setter方法保持一致,并且遵循标准的Java Bean规范。如果存在拼写错误或访问器方法不符合约定,则可能导致框架无法正确赋。 另外需要注意的是,对于由逆向工程工具生成的代码,默认会按照一定规则将数据库列名转化为对象属性名。因此建议仔细核对两者之间的一致性[^3]。 --- #### 4. **针对特殊类型字段单独处理** 部分特定类型的字段可能需要额外的关注,比如日期时间戳等。可以在相应成员变量上方增加注解以明确其格式化方式: ```java import com.alibaba.fastjson.annotation.JSONField; import org.springframework.format.annotation.DateTimeFormat; public class Order { private Long orderId; @JSONField(format = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date orderTime; // Getter and Setter methods... } ``` 这样能够防止因序列化/反序列化的差异造成数据丢失[^5]。 --- #### 5. **确认SQL语句执行无误** 最后还需排查是否存在其他潜在因素干扰最终输出效果,例如: - SQL脚本本身存在问题; - 表间联结条件设定不合理; - 权限不足致使读不到目标记录等等。 一旦定位具体原因后便可采针对性措施加以修正[^1]。 --- ### 总结 综上所述,面对MyBatis查询结果出现空白项的现象可以从以下几个方面入手寻找根源并予以修复:一是核查基础环境搭建状况;二是优化参数传递机制;三是强化异常捕捉能力。只有做到全面考虑各种可能性才能彻底杜绝此类现象的发生。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值