Оригинальное тело Mybatis Ibatis, и теперь оно отделилось от фонда Apache. Новый официальный сайт - http://www.mybatis.org/.
Я не знал магического использования этой аннотации перед изучением исходного кода Mybatis, но когда я увидел, что это была аннотация при разборе параметра, я понял, что когда мы возвращаем такие типы, как карта <строка, карта <строка, объект >>, нам часто трудно это сделать, потому что это могут быть данные из множественных слоев, так что для нас невозможно создать другую модель.
Тогда мы можем использовать эту аннотацию
@Retention (armentpolicy.runtime) @target (elementtype.method) public @Interface mapkey {string value ();}Очевидно, что эта аннотация используется в методе, и конкретное использование состоит в том, чтобы установить то, что является ключом внешней карты. Таким образом, мы можем запросить очень сложные результаты, не создавая новую сущность.
PS: давайте посмотрим на Mybatis, используя аннотацию @mapkey, чтобы получить несколько записей запросов на карту, чтобы легко получить значение поля, используя метод get ().
Сценарий требований:
Пакетная поставка нескольких частей данных из базы данных, включая два поля: идентификатор и имя. Я надеюсь, что результат может быть получен непосредственно с помощью карты, а затем значение имени может быть легко получено через map.get (id).
вопрос:
Если вы используете следующий код, если есть несколько результатов запроса, сообщается об ошибке, потому что Mybatis сохраняет результаты в карте в форме («id»: 123) и («имя»: «Джек»). Так что, если вы вернете результат, это нормально иметь запись, включая ID и имя; Если вы возвращаете несколько записей, то есть есть несколько («id»: 123) и («id»: 124), то Mybatis будет глупы и не знает, как с этим справиться.
Map <string, object> m = abcdao.getnamesbyids (idlist);
Решение состоит в том, чтобы использовать другую карту снаружи:
Map <integer, map <string, object >> m = abcdao.getnamesbyids (idlist);
Затем добавьте аннотацию в этот метод:
<span style = "Белое пространство: pre"> </span>/** <span style = "Белое пространство: pre"> </span> * Получить имя в партиях, основанных на нескольких идентификаторах <span style = "Белое пространство: pre"> </span> * @param списки списка </span style = "white-space: pre span>" white space: pre span> "span>" span> "/span <> pre span * @returin style = "Белое пространство: pre"> </span> */<span style = "Белое пространство: pre"> </span> @mapkey ("id") <span style = "Белое пространство: pre"> </span> public map <integer, map <string, object >> getNamesbyids (list <string, объект >> list);Эта аннотация указывает на то, что ключом к самой внешней карте является значение поля с именем «ID» в результате запроса.
Конфигурация в mapper.xml заключается в следующем:
<select id = "getNamesByids" resultType = "java.util.map"> select id, имя из tb_abc, где идентификатор в <foreach item = "item" collection = "list" open = "(" seperator = "," close = ")"> #{item.id} </foreach> </selet>Выше приведено подробное объяснение использования @mapkey в аннотации Mybatis, представленной вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!