java – 如何使用mybatis注释将Map作为返回类型

在mybatis中使用注释,我们可以将返回类型作为普通地图吗?

基本上,我想要这样的东西

@Select("select a, b from tableA")
public Map<String, String> getItems();

哪里

mysql> select * from tableA;
+------+------+
| a    | b    |
+------+------+
| 1    | a    |
| 2    | b    |
| 3    | c    |
+------+------+

mysql> desc tableA;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a     | varchar(10) | YES  |     | NULL    |       |
| b     | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

试过这个

@Select("select a, b from tableA")
@MapKey("a)
public Map<String, String> getItems();

但是它给出了以下异常

### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'a' in 'class java.lang.String'
最佳答案
这是我如何做到这一点,没有额外的方法将List转换为Map:

这是Message类

public class Message {
   private String code;
   private String message;
   GETTERS/SETTERS
}

映射器

@Select("SELECT code, message FROM MESSAGES")
@MapKey("code")
public Map<String, Message> selectAllMessages();

不幸的是,创建Map< String,String>是不可能的.

转载注明原文:java – 如何使用mybatis注释将Map作为返回类型 - 代码日志