在近期学习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实体类和数据库列名不一致就成了一种常态。
为了尽量避免这种不一致造成的问题,我们可以在进行项目开发时参照阿里巴巴的开发规约,如下图所示: