Mybatis实体类属性名和表中字段名不一致会导致什么后果?怎么解决?

         在近期学习mybatis的过程中,查询表格中的内容时,会出现个别字段名称下打印出null的情况(如果打印出内容全部为null,则要考虑数据库表格中是否有数据或者数据库配置文件有问题)

如下图为表格内容:

打印表格内容:

 可以看出来brandName和companyName打印出的内容为null

         在经过上网查询原因后发现,原因是实体类属性名和表中字段名要保持一致才可以查询出内容,那么就会有人认为把实体类属性名改成与表中字段名一致不就可以了?但是我们知道,实体类属性名的命名规则要严格按照驼峰命名法,无法与表格字段保持一致,下面是几种解决方案

1.起别名

这种方法是给字段名起别名,即:”字段名 as 别名“,这里将别名修改为与属性名一致便可实现字段名与属性名一致的要求,具体实现方法为在mapper.xml文件中配置sql片段并引用,在其中编写给字段名起别名的内容,但这样的方法很有局限性并且不灵活。

2.将resultType替换为resultMap

我们需要先在mapper.xml文件中创建resultMap,然后在mapper.xml文件的select方法节点中,把resultType替换为resultMap。

 在resultMap中定义brand_name与brandName以及company_name与companyName之间的映射关系,接下来再次运行:

 可以发现实现了正常的打印。

总结:

现在所有的公司对于Java变量的命名规范,和数据库列名的命名规范要求并不一致!Java的变量命名规范是驼峰命名法,数据库的列名命名规范是下划线区分单词命名法,这样Java实体类和数据库列名不一致就成了一种常态。

为了尽量避免这种不一致造成的问题,我们可以在进行项目开发时参照阿里巴巴的开发规约,如下图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值