`
zhanghteye
  • 浏览: 51527 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于Mybatis的应用:数据库表增加一个字段,还要改哪些地方

阅读更多

今天处理一个生产环境报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,到时只需改一个地方即可。

 

       

 

分享到:
评论

相关推荐

    基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密

    Tk MyBatis提供了更简洁的接口设计和更强大的功能,而MyBatis Plus则是一个对MyBatis的扩展,简化了基本的 CRUD 操作,无需编写大量的Mapper和Service代码。 在MyBatis中,我们通常使用XML映射文件或注解来定义SQL...

    mybatis测试数据库

    在MyBatis测试环境中,我们通常会创建一个或多个数据库表,这些表的设计应符合业务需求,并且与MyBatis的Mapper接口和XML配置文件相对应。 1. **MyBatis与数据库连接**:MyBatis通过JDBC驱动与数据库建立连接。在...

    非常详细的用 java(springmvc+mybatis)实现excel导入功能并且保存到数据库

    MyBatis是一个基于Java的持久层框架,提供了一个简洁的方式来访问数据库。它提供了一个灵活的方式来映射Java对象到数据库表,并提供了一个强大的SQL映射语言来定义SQL语句。在本实例中,使用了MyBatis来实现数据库...

    数据库到Mybatis的映射

    在本项目中,`MpGenerator.java`很可能是一个基于Mybatis-Plus的代码生成工具。Mybatis-Plus是Mybatis的一个扩展,提供了更多的便捷功能,如自动填充字段、条件构造器等。使用这个工具,开发者可以快速生成实体类...

    mybatis以根据数据库的表自动生成模型,映射接口

    MyBatis Generator(MBG)是一款强大的工具,它允许开发者基于数据库中的表自动创建Java模型类、Mapper接口以及对应的XML映射文件。这款插件极大地简化了开发过程,避免了手动编写这些重复性的代码,提高了开发效率...

    C#代码生成器源码-基于MyBatis.NET

    【C#代码生成器源码-基于MyBatis.NET】是一个专为开发人员设计的工具,主要用于自动化C#代码的生成工作,特别是针对SQLServer数据库的项目。它利用了MyBatis.NET框架的强大功能,帮助开发者快速构建常规的三层架构...

    基于mybatis的留言本.docx

    基于MyBatis的留言本是一个简单的Web应用程序,它允许用户添加、查看、编辑和删除留言。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。使用MyBatis可以避免几乎所有的JDBC代码和手动设置...

    Java自动生成数据库表实体和mybatis接口以及xml文件

    在Java开发中,尤其在基于Oracle或MySQL数据库的项目中,使用MyBatis作为持久层框架时,手动编写数据库表的实体类、MyBatis接口和对应的XML文件是一项耗时且容易出错的工作。为了解决这个问题,开发者通常会利用代码...

    springMVC+mybatis实现登录和增删改查

    在本项目中,"springMVC+mybatis实现登录和增删改查"是一个典型的Web应用程序,它结合了SpringMVC、MyBatis两大主流框架,以及Bootstrap前端库,来构建一个用户友好的数据管理平台。以下是这个项目涉及到的主要知识...

    mybatis多条件查询处理方案(查询条件为数据库字段非传递参数).pdf

    但如果我们要实现更复杂的逻辑,比如基于数据库字段本身的值进行查询,`&lt;if&gt;`标签就显得有些局限了。 对于某些场景,我们可能需要在不依赖传递参数的情况下,根据数据库字段的值进行查询。比如,查询定时显示的轮播...

    数据库框架Mybatis-plus,实现java代码对数据库的增删改查

    Mybatis-plus是一个基于Mybatis和Spring的轻量级框架,主要目标是简化对数据库的常规操作,例如增、删、改、查(CRUD),它提供了更为方便的API,使得开发者能够更高效地进行数据库操作。这个框架在Mybatis的基础上...

    一个小的jsf+mybatis的项目

    【标题】"一个小的jsf+mybatis的项目"揭示了这是一个基于Java Server Faces (JSF) 和 MyBatis 框架构建的轻量级Web应用。JSF是Java平台上的一个用于构建用户界面的MVC(模型-视图-控制器)框架,而MyBatis则是一个...

    基于java的企业级应用开发:MyBatis的核心配置.ppt

    基于 Java 的企业级应用开发:MyBatis 的核心配置 ...本资源详细介绍了 MyBatis 框架的核心配置,包括 SqlSessionFactory、SqlSession、映射文件等内容,为开发者提供了一个基于 Java 的企业级应用开发的解决方案。

    基于mybatis-plus实现多租户级别的数据隔离

    在数据库层面上,这通常通过为每个租户创建独立的表或视图,或者通过在公共表中添加一个租户标识字段来实现。 在基于Mybatis-Plus的项目中实现多租户,我们需要考虑以下几个关键步骤: 1. **租户标识**:确定用于...

    mybatis逆向工程生成mysql数据库表的pojo,model,mapper的插件包

    Mybatis逆向工程是开发过程中一个非常实用的工具,它能帮助开发者自动生成与数据库表对应的Java实体类(POJO)、Model以及Mapper接口和XML配置文件,极大地提高了开发效率。这个插件包专为MySQL数据库设计,使得在...

    基于mybatis 来实现对敏感数据在进出DB时候进行脱敏处理, 让各位码友们无需自己各种手动实现

    2. **自定义插件**:通过创建一个 MyBatis 插件,我们可以拦截 SQL 语句,并在执行时动态修改 SQL,对敏感字段进行脱敏处理。这样,无论何时执行涉及敏感数据的 SQL,都可以自动应用脱敏规则。 二、实现步骤 1. **...

    基于单表的增删改查(jsp+servlet版)

    "基于单表的增删改查(jsp+servlet版)"是一个典型的Java Web应用实践,主要用于理解和掌握如何通过JSP(JavaServer Pages)和Servlet来实现数据库中的数据操作。在这个项目中,我们将深入探讨JSP和Servlet在实现...

    基于java的企业级应用开发:MyBatis的关联映射.ppt

    MyBatis是一个强大的Java持久层框架,它允许开发者将SQL语句与Java代码分离,以更灵活的方式处理数据库操作。关联映射是MyBatis中处理对象与对象间关联关系的关键特性,尤其在企业级应用开发中,面对复杂的数据库表...

    《Mybatis应用技术》复习资料.doc

    ### MyBatis应用技术知识点详解 #### 一、MyBatis简介 - **定义**: MyBatis 是一个优秀的持久层框架,它简化了 JDBC 的操作流程,使开发者能够更专注于 SQL 语句的编写,而无需关注底层的数据库连接、预处理及结果...

    mybatis逆向工程(通过数据库生成java实体类)

    【标题】"mybatis逆向工程(通过数据库生成java实体类)"所涉及的知识点主要集中在MyBatis框架的逆向工程(Reverse Engineering)上,这是一个强大的功能,它可以帮助开发者快速生成基于数据库表的Java实体类、Mapper...

Global site tag (gtag.js) - Google Analytics