在IDEA工具进行Java开发时,可以装各种各样的插件,其中就包括MyBatisX插件:
这个插件可以在左侧导航栏的接口处和映射文件处各自出现一个小鸟图标,让我们对项目结构一目了然。但是前几日在开发时出现了一个问题,就是在进行返回值为一个Map集合的数据库查询时,在接口类的方法名会报红,但是却并不影响查询结果:
虽然对结果并不影响,但是却看起来很不舒服。。。。。。
若是想解决这个方法名报红的问题,可以在方法名上面加一个注释(其中”id“为表中的主键id):
但是查询结果就出问题了:
此时,我的心情就像。。。。。
开玩笑,还是要用的。下面就分析一下这个问题的原因和解决方式
首先,不加注释,它会提示:
就是提示我们添加MapKey
然后我们加上去,并且点进去去看看MapKey详情
可以看到,它提示“运行时有效”,“作用于方法之上”,没有默认值的情况下必须为“value”赋值
此时,我们将测试类的代码修改一下,直接打印Map,会得到:
会发现,测试正常了,但是貌似多了那么一点东西,那就是在结果前面多出了一个主键id
而且得出的结果也变成了一个“{key = value}”的map集合,而“key”就是我们加在注解上的id的值。
既然是这样,把注解上的id换成其他的列名,如“username”会发生什么呢?
果然,会变成username的值
但是要注意,不建议使用除了主键id以外的其他属性,因为主键id具有唯一性,而其他的属性会出现重复的情况,会出现结果被覆盖的情况。