首页 > 技术文章 > MyBatis——resultMap实体类名和列名的对应

CNLayton 2020-08-21 14:14 原文

  之前说过我们实体类的属性名和数据库列名是一致的,那如果是不一致的呢

   现在我们再把测试类中相关的代码改好

   还有一个地方就是我们的xml配置,我们把成员变量名改了,就找不到keyProperty,还有OGNL表达式找不到相关成员变量

   所以我们把相关的成员变量名改了

  现在我们的更新,保存的操作都能正常执行。

  但查询操作却有点问题

   只有一部分数据被封装进去了——只有userName,那是因为MySQL数据库不区分大小写,userName和username等同所以能封装进去,而其他的完全不一样,就封装不进去

这里注意如果是linux系统是严格区分大小写的

  现在我们来解决封装不进去的问题,之所以封装不进去就是名字对不上,我们可以通过起别名的方式解决

  也就是说mysql执行这条sql语句出来的列名跟实体类是匹配的

  另一种方法是在xml文档进行一个配置,这里是创建了一个结果集的关系表,使得java实体类的属性名和数据库的列名一一对应,property是java属性名,column是表的列名

  然后resultType就没用了,要用我们新定义的userMap

  这样的执行也是毫无问题的

  第一种方式是直接在数据库层实现,第二种方式还要多解析个xml,所以第一种的执行效率比第二种的要高,但第二种的开发效率高,因为我们既然定义了这个map,之后有关查询的都可以配置这个map,不用动里面的sql语句,两种方法各有利弊。

 

 

 

 

 

  2020/8/21 14:16:08 我不要剧烈的快乐……取而代之亦没有深刻的绝望……追求植物一样的人生,过着平静的生活,这才是我的目标。——吉良吉影《JOJO奇妙冒险》

 

推荐阅读