今天处理一个生产环境报NullPointerException的问题,根据查询的对象,获得对象中的一个字段,结果为空。
报错位置:int partnerCode = servicefeeRecord.getPartnerCode().intValue();
(注:本身这直接取字段不判断是否为空,就获得它的int值。写法本身就有点问题,虽然业务上这个字段一定存在。)
定位问题步骤:
1、查看生产数据库,对象对应的数据改字段是有值的。
为啥没查出来?继续找问题。
2、从源头定位起,从查询对象的service方法,找到dao方法,再找到mapper文件里面的查询sql。
sql查询字段中并没有包括需要的字段。
原来问题在此,那怎么会有这个坑呢?
3、根据最近了解的其他人做相关需求的变动,原来在于有同事做需求拓展时,只在数据库表增加该字段、在实体bean增加该字段,mapper文件中的sql查询,没有增加改字段导致。
总结:
1、原本很简单的问题,却花费大半个小时来处理问题,以及帮别人填坑,实属无奈。
2、开发人员工作的严谨性,相当重要,如果考虑不全,不单单影响到自己,甚至影响到其他人。
3、基于Mybatis的应用:数据库表增加一个字段,还要改哪些地方?
a、写sql脚本修改表结构
b、实体bean增加对象
c、mapper中所有涉及查询整个对象字段的sql,都需一一添加对应的新增字段
d、mapper配置中涉及整个对象的查询尽量采用以下方式:
<sql id="queryColumns">
Column1,Column2,Column3,....
</sql>
<select id="查询方法名称" resultMap="返回结果对象">
SELECT
<include refid="queryColumns" />
FROM
...
</select>
这样很多类似查询,都是引用queryColumns,到时只需改一个地方即可。
相关推荐
* * * * * MyBatis的关联映射 为什么学习MyBatis关联关系? 9.1 关联关系概述 实际... 一个A类类型对应多个B类类型的情况,需要在A类中以集合的方式引入B类类型的对象,在B类中定义A类类型的属性a; 在A类中定义B类类型
这种方式,要注意的一个地方就是。在User.xml 的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。 运行这个测试...
MyBatis是一个优秀的基于Java的持久层框架,它内部封装了JDBC,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建Statement等繁杂的过程。MyBatis的主要特点和功能如下: 简单易用...
是一个数据持久层(ORM)框架。 MyBatis SQL映射器框架使将关系数据库与面向对象的应用程序结合使用变得更加容易。MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合。相对于对象关系映射工具,简单性是...
这是一个基于SSM(Spring、SpringMVC和MyBatis)框架与Vue.js前端技术的计算机网络实验课程教学网站。该资源包含了源码、部署说明、系统介绍以及数据库设计,旨在帮助开发者快速搭建一个功能完善的网络实验课程教学...
本项目是一个集成了SSM(Spring、SpringMVC、MyBatis)框架的高效增删改查功能实现。它主要以Java语言开发,辅以CSS和JavaScript进行页面渲染和交互。 技术细节: - 文件总数:共49个文件 - Java源文件:14个,...
这是一个基于SSM(Spring、SpringMVC、MyBatis)框架和Vue.js的学习和交流平台项目。该项目包含了源码、部署说明、系统介绍以及数据库设计。以下是关于这个项目的简要介绍:源码:本项目提供了完整的源代码,包括前端...
这是一个基于SSM(Spring、SpringMVC、MyBatis)框架和Vue.js的学校访客登记系统项目。该项目包含了源码、部署说明、系统介绍以及数据库设计。以下是关于这个项目的简要介绍:源码:本项目提供了完整的源代码,包括...
这是一个基于SSM(Spring、SpringMVC、MyBatis)框架和Vue.js前端技术的完整学生选课管理系统。这个项目包含了源码、部署说明、系统介绍以及数据库设计,为开发者提供了一个全面的学习资源。源码:本项目使用Java语言...
这是一个基于SSM(Spring、SpringMVC和MyBatis)框架与Vue.js前端技术的工厂新闻管理系统。本项目旨在为工厂提供一个高效、易用的新闻发布和管理平台,以便更好地展示企业形象和宣传信息。源码部分包含了后端的Java...
这是一个基于SSM(Spring + Spring MVC + MyBatis)框架和Vue.js的花卉养殖知识平台项目。这个项目旨在为用户提供一个便捷、易用的平台,以获取关于花卉养殖的知识和技巧。源码部分包含了项目的源代码,包括前端Vue.js...
研究生档案管理系统(WLW)是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js的在线档案管理平台。该系统旨在帮助高校管理部门高效地管理和查询研究生的档案信息,包括个人信息、成绩单、学位证书等。本资源包含...
这是一个基于SSM(Spring、SpringMVC和MyBatis)框架与Vue.js前端技术的综合性学生比赛指导管理系统。本资源包含了完整的项目源码、部署说明、系统介绍以及数据库设计,旨在帮助开发者快速搭建一个高效、实用的学生...
交易记录表字段:id、cardid、value、time、spendtype 3. 电影票模块 a) 商品信息列表:在会员卡列表中会员卡项左侧点击购买弹出电影票模态窗口,显示当前所有电影票的商品信息 b) 购买:有两种购买选择方式:积分...
基于SpringBoot+Vue前后端分离的在线教育平台项目,单体应用服务架构。 系统共设计三种角色:管理员、讲师和学员,三个角色分别对应一个操作端。也就是本系统1个后台项目,三个前端项目。管理员端没有引入角色和...
这是一个基于SSM(Spring、SpringMVC和MyBatis)框架与Vue.js前端技术的小型企业人事管理系统。该系统旨在帮助企业实现人力资源管理的自动化、规范化和高效化,提高企业运营效率。源码部分包含了项目的核心代码,包括...
这是一个基于SSM(Spring、SpringMVC和MyBatis)框架与Vue.js前端技术的校园招聘信息管理系统。该系统旨在帮助学校更好地管理校园招聘信息,为学生提供一个便捷的求职平台。源码部分包含了项目的核心代码,包括后端的...
这是一个基于SSM(Spring、SpringMVC、MyBatis)框架和Vue.js的娱乐影视公司管理系统。该系统旨在帮助影视公司实现业务流程的自动化管理,提高工作效率,降低运营成本。源码部分包含了项目的核心代码,包括前端Vue.js...
表结构元数据的API也向用户开放,同时支持在使用过程中,灵活调整映射关系,因此用户可以用API动态的创建表结构的模型,从而实现各种动态类型和表的映射(例如POJO中包含一个Map,用于映射各种动态扩展的字段)企业...
教师管理信息系统是一款基于SSM(Spring、SpringMVC、MyBatis)框架和Vue.js前端技术的综合性教育管理系统。该系统旨在帮助学校和教育机构更高效地管理教师信息,提高教学管理水平。源码部分包含了项目的核心代码,...