每周的博客从5月份有开始断更了,看来坚持每周写一篇博客缺失很难,不过从这周开始,除了一方面把之前的那几周没写的博客补回来,另一方面从这周开始要真正逼自己的写一篇博客,并争取在7月份前搭建起自己的个人博客网站!好,废话少说,接下来快速进入今天的话题。
今天写的博客还是写自己开发过程中遇到的坑。相信大家在开发Java web应用时对Mybatis这个第三方ORM(对象关系映射)框架并不陌生,但在开发过程有没有遇到坑呢?作者本人在开发过程就遇到这个坑,这个坑对自己的伤害挺大的😂这个坑具体是怎么样的呢?听我慢慢描述。 首先在我的项目里我定义了如下这个java entity类 - RiskSchemeNodeInfo。
接着我定义了这个实体类的mapper类,并继承了框架中的CommonsMapper公共类,这个公共类有着丰富灵活的增删改查方法。如下图所示
紧接着我在某个类中使用到了这个mapper类的updateByPrimaryKeySelective方法,如下图所示。谁知当我更新RiskSchemeNodeInfo这个类所对应的数据库表字段时,发现available这个字段在控制台打印的更新sql语句中居然没有,正常来说应该是update xxxx set available = ?, xxx = ? … where xxx = ?这样的形式,但是其它字段都有打印呀,就available这个字段没有!我就纳闷了。
经过再三思考,我把RiskSchemeNodeInfo中的available这个字段的数据类型由boolean改成了Boolean,也就是改为了其包装类型。如下图所示:
重启了项目运行时发现居然可以了,原来是数据类型搞得鬼!大家在编写java bean对象并应用到orm框架(如Mybatis或Hibernate等等)时,一定要切记将java bean类中所有字段的数据类型都写成其包装类型,也就是要写Integer而不是int,其它数据类型以此类推!
好,今天就讲到这里,早睡,晚安!