1. Обзор
При выборе отображения в mybatis тип возврата может использоваться с ResultType или ResultMap. ResultType непосредственно представляет тип возврата, в то время как ResultMap является ссылкой на внешнюю карту результата, но ResultType и ResultMap не могут существовать в одно и то же время.
Когда Mybatis запрашивает отображение, на самом деле, каждый запрос атрибута помещается в соответствующую карту, где ключ - имя атрибута, а значение - его соответствующее значение.
① Когда предоставленный атрибут типа возврата является ResultType, Mybatis извлечет пары значений ключей на карте и назначит их соответствующим атрибутам объекта, указанного в результате ResultType. Таким образом, фактически, возвращается тип каждой карты запросов Mybatis, является ResultMap. Однако, когда предоставляемый атрибут типа возврата является ResultType, Mybatis автоматически присваивает соответствующее значение атрибутам объекта, указанного в результате ResultType.
② Когда предоставляемый тип возврата является ResultMap, поскольку карта не может хорошо представлять модель домена, ей необходимо дополнительно преобразовать ее в сам объект, который часто очень полезен в сложных запросах.
2. resultStype
Blog.javapublic Class Blog {Private Int Id; Private String Title; Private String Content; Private String владелец; частный список <Комментарий> Комментарии;}Соответствующая таблица базы данных хранит идентификатор, заголовок, контент и атрибуты владельца.
<typealias alias = "blog" type = "com.tiantian.mybatis.model.blog"/> <select id = "selectblog" parametertype = "int" resultype = "blog"> select * from t_blog, где id = #{id} </select>MyBatis автоматически создаст объект ResultMap, а затем инкапсуляет пару значений ключей на основе имени найденного атрибута. Затем вы увидите, что возвращаемый тип является объектом блога, а затем вытащите пару клавиш, соответствующую объекту блога из ResultMap, и назначьте его.
3. ResultMap
Это также очень полезно, когда тип возврата непосредственно является картой результата, которая в основном используется для сложных совместных запросов, поскольку нет необходимости проводить простые запросы. Сначала взгляните на простой запрос с результатом возврата, а затем посмотрите на использование сложных запросов.
① Написание простого запроса
<resultMap type="Blog" id="BlogResult"><id column="id" property="id"/><result column="title" property="title"/><result column="content" property="content"/><result column="owner" property="owner"/><result column="owner" property="owner"/><result column="owner" property="owner"/><result column="owner" свойство = "Владелец"/> <</resultMap> <select id = "selectblog" parametertype = "int" resultmap = "blogresult"> select * from t_blog, где id = #{id} </selet>Значение ResultMap на карте Select - это идентификатор внешней карты результата, указывающий, какой результат отображается. Атрибут типа внешней карты результата показывает, какой тип результата карты результата. Вот тип блога, поэтому Mybatis выведет его в качестве объекта блога. Для определения идентификатора объекта используется идентификатор узла дочернего узла, в то время как для определения некоторых простых свойств используется идентификатор объекта, в то время как результат дочернего узла используется для определения некоторых простых свойств. Свойство столбца представляет атрибуты, запрошенные из базы данных, и свойство представляет, какое свойство соответствующее значение запрошенного свойства назначается объекту объекта. Это как написать ResultMap для простого запроса.
②complex Query
Существует класс комментариев, который имеет ссылку на блог, указывающий, для чего он предназначен. При запросе комментариев соответствующий блог также должен быть найден и назначен на атрибут блога.
public class Comment {private int id;private String content;private Date commentDate = new Date();private Blog blog;}<!--From CommentMapper.xml file--><resultMap type="Comment" id="CommentResult"><association property="blog" select="selectBlog" column="blog" javaType="Blog"/></resultMap><select id="selectComment" parameterType="int" resultMap = "Комментарий -размер"> select * from t_comment, где id = #{id} </select> <select id = "selectblog" parametertype = "int" resultype = "blog"> select * from t_blog, где id = #{id} </select>Сначала запросите карту SELECT с ID в качестве SelectComment, а затем получите объект ResultMap с идентификатором в качестве комментария. Вы можете видеть, что возвращаемый тип соответствующей карты результата - это объект комментариев, который имеет только один узел ассоциации, и не существует идентификатора и результата, соответствующих узлам, соответствующим простому запросу, упомянутому выше. Тем не менее, он все равно будет назначать соответствующий идентификатор и другие атрибуты объекту комментария. Это то, что упоминалось ранее Mybatis, он имеет функцию автоматической инкапсуляции. Пока предоставлен тип возврата, Mybatis будет использовать результаты запроса, чтобы инкапсулировать соответствующий объект в соответствии с его собственным суждением. Следовательно, в простом запросе выше, если он не четко указывает, какое поле соответствует идентификатору, а какое поле соответствует заголованию в карте результата, Mybatis также поможет инкапсулировать его в соответствии с его собственным суждением. Собственное суждение Mybatis состоит в том, чтобы сравнить поле запроса или его соответствующий псевдоним с атрибутами объекта возврата. Если он соответствует, а тип также соответствует, Mybatis назначит его. Атрибут блога связан с соответствующей картой результата выше, и его соответствующий тип Java - это блог. В приведенном выше методе написания связанный объект связан с помощью подразделений, и, конечно, он также может быть связан непосредственно с помощью запроса ассоциации. В приведенной выше узел детского узела атрибут свойства указывает, какое соответствующее свойство является типом возврата ResultMap. Для примера выше, атрибут блога управлял комментарием; Выбрать Указывает, какой выберите MAP, чтобы отобразить соответствующий связанный атрибут, то есть он запросит карту выбора со значением, соответствующим для выбора, чтобы запросить связанный объект атрибута; В столбце указывается пара клавиш, соответствующую карте результата с ID CommentResult. Эта пара ключевых значений будет использоваться в качестве параметра для подразделения связанного объекта, то есть значение запроса атрибута блога в SelectComment передается в качестве параметра в подраздел блога связанного объекта в подбору блога связанных объектов; Javatype указывает, какой тип текущего связанного объекта находится на Java.
Вышеуказанное вводит запрос отношений один к одному или один ко многим в случае одного к одному. В реальных приложениях есть еще одно приложение, которое использует чаще. Это выяснить соответствующие больше сторон через один к одному. Принимая больше сторон, он также должен связать один к одному: при выходе объекта блога, вытащите все соответствующие комментарии, и при выходе с комментария он все еще должен взять соответствующий блог, который вынимается в Java с помощью запроса.
<!-- From BlogMapper.xml file--><resultMap type="Blog" id="BlogResult"><id column="id" property="id"/><collection property="comments" select="selectCommentsByBlog" column="id" ofType="Comment"></collection></resultMap><resultMap type="Comment" id="CommentResult"><association property="blog" javatype = "blog" column = "blog" select = "selectblog"/> </resultMap> <select id = "selectblog" parametertype = "int" resultMap = "blogresult"> select * from t_blog, где id = #{id} </select> <select = "selectmplog blog" parameterType = "int" resultMap = "rescordmAp =" resultMAp = "resultMAp =" rupportSult " blog = #{blogid} </select>Запись приведенного выше запроса - это карта Select с ID SelectBlog, а результат возврата - результат с помощью ID Blogresult. Тип Blogresult - это блог, который указывает атрибуты и поля ID. Указание ID будет иметь большое влияние на строительство Mybatis внутри. Это связано с объектом комментариев. Поскольку в блоге может быть много комментариев, которые являются коллекцией, поэтому он сопоставлен с коллекцией коллекции. Выбор по -прежнему указывает, какой подзадатель выполняется для запроса соответствующих комментариев. Столбец означает, какое значение поля, найденное выше, передается в подпрограмму в качестве параметра. ofType также представляет тип возврата. Возвратный тип здесь - тип внутри коллекции. Причина, по которой Thitype используется вместо типа, заключается в том, что он используется в Mybatis, чтобы отличить его от ассоциации.
public void SelectCommentsByBlogTest () {sqlSession session = util.getSqlSessionFactory (). opensession (); commentmapper commentmapper = session.getmapper (commentmapper.class); list <momplys> comments = commentmapper.selectcommentsbyblog (6); void testSelectone () {sqlSession session = util.getSqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getMapper (blogmapper.class); блог блог = blogmapper.selectblog (6); список <phomment> Комментарии = blog.getcomments (); если (комментарии! Комментарии) System.out.println (Comment);} session.close ();}Выше приведено результаттип и Resultmap в Mybatis, представленном вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!