{"id":709,"date":"2017-10-19T00:01:49","date_gmt":"2017-10-18T16:01:49","guid":{"rendered":"https:\/\/199604.com\/?p=709"},"modified":"2017-10-19T19:31:22","modified_gmt":"2017-10-19T11:31:22","slug":"mybatis%e4%b8%adcollection%e5%92%8cassociation%e7%9a%84%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"https:\/\/199604.com\/709","title":{"rendered":"Mybatis\u4e2dcollection\u548cassociation\u7684\u4f7f\u7528\u533a\u522b"},"content":{"rendered":"<p>\u6700\u8fd1\u4e00\u76f4\u628acollection\u548cassociation\u5f04\u6df7\uff0c\u6240\u4ee5\u4e3a\u4e86\u589e\u5f3a\u81ea\u5df1\u7684\u8bb0\u5fc6\uff0c\u5c31\u64b8\u4e00\u4e2a\u5173\u7cfb\u51fa\u6765\u7b97\u662f\u603b\u7ed3\u7f62\u4e86<\/p>\n<hr \/>\n<p>1. \u5173\u8054-association<br \/>\n2. \u96c6\u5408-collection<\/p>\n<p>\u6bd4\u5982\u540c\u65f6\u6709User.java\u548cCard.java\u4e24\u4e2a\u7c7b<\/p>\n<p>User.java\u5982\u4e0b:<\/p>\n<p>public class User{<\/p>\n<p>private Card card_one;<\/p>\n<p>private List&lt;Card&gt; card_many;<\/p>\n<p>}<\/p>\n<p>\u5728\u6620\u5c04card_one\u5c5e\u6027\u65f6\u7528association\u6807\u7b7e, \u6620\u5c04card_many\u65f6\u7528collection\u6807\u7b7e.<\/p>\n<p>\u6240\u4ee5association\u662f\u7528\u4e8e\u4e00\u5bf9\u4e00\u548c\u591a\u5bf9\u4e00\uff0c\u800ccollection\u662f\u7528\u4e8e\u4e00\u5bf9\u591a\u7684\u5173\u7cfb<\/p>\n<p>\u4e0b\u9762\u5c31\u7528\u4e00\u4e9b\u4f8b\u5b50\u89e3\u91ca\u4e0b\u5427<\/p>\n<p>association-\u4e00\u5bf9\u4e00<\/p>\n<p>\u4eba\u548c\u8eab\u4efd\u8bc1\u7684\u5173\u7cfb<\/p>\n<p>\u4e0b\u9762\u662fpojo<\/p>\n<pre class=\"lang:default decode:true \">public class Card implements Serializable{\r\n\tprivate Integer id;\r\n\tprivate String code;\r\n\/\/\u7701\u7565set\u548cget\u65b9\u6cd5.\r\n}<\/pre>\n<pre class=\"lang:default decode:true \">public class Person implements Serializable{\r\n\tprivate Integer id;\r\n\tprivate String name;\r\n\tprivate String sex;\r\n\tprivate Integer age;\r\n\t\/\/\u4eba\u548c\u8eab\u4efd\u8bc1\u662f\u4e00\u5bf9\u4e00\u7684\u5173\u7cfb\r\n\tprivate Card card;\r\n\/\/\u7701\u7565set\/get\u65b9\u6cd5.\r\n}<\/pre>\n<p>\u4e0b\u9762\u662fmapper\u548c\u5b9e\u73b0\u7684\u63a5\u53e3<\/p>\n<pre class=\"lang:default decode:true \" title=\"card\u63a5\u53e3\">package com.glj.mapper;\r\n\r\nimport com.glj.poji.Card;\r\n\r\npublic interface CardMapper {\r\n\tCard selectCardById(Integer id);\r\n}\r\n<\/pre>\n<pre class=\"lang:default decode:true \" title=\"CardMapper.xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!DOCTYPE mapper\r\n    PUBLIC \"-\/\/mybatis.org\/\/DTD Mapper 3.0\/\/EN\"\r\n    \"http:\/\/mybatis.org\/dtd\/mybatis-3-mapper.dtd\"&gt;\r\n&lt;mapper namespace=\"com.glj.mapper.CardMapper\"&gt;\r\n\t&lt;select id=\"selectCardById\" parameterType=\"int\" resultType=\"com.glj.poji.Card\"&gt;\r\n\t\tselect * from tb_card where id = #{id} \r\n\t&lt;\/select&gt;\r\n&lt;\/mapper&gt;<\/pre>\n<pre class=\"lang:default decode:true \" title=\"User\u63a5\u53e3\">package com.glj.mapper;\r\n\r\nimport com.glj.poji.Person;\r\n\r\npublic interface PersonMapper {\r\n\tPerson selectPersonById(Integer id);\r\n}\r\n<\/pre>\n<pre class=\"lang:default decode:true \" title=\"UserMapper\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!DOCTYPE mapper\r\n    PUBLIC \"-\/\/mybatis.org\/\/DTD Mapper 3.0\/\/EN\"\r\n    \"http:\/\/mybatis.org\/dtd\/mybatis-3-mapper.dtd\"&gt;\r\n&lt;mapper namespace=\"com.glj.mapper.PersonMapper\"&gt;\r\n\t&lt;resultMap type=\"com.glj.poji.Person\" id=\"personMapper\"&gt;\r\n\t\t&lt;id property=\"id\" column=\"id\"\/&gt;\r\n\t\t&lt;result property=\"name\" column=\"name\"\/&gt;\r\n\t\t&lt;result property=\"sex\" column=\"sex\"\/&gt;\r\n\t\t&lt;result property=\"age\" column=\"age\"\/&gt;\r\n\t\t&lt;association property=\"card\" column=\"card_id\" \r\n\t\t\tselect=\"com.glj.mapper.CardMapper.selectCardById\"\r\n\t\t\tjavaType=\"com.glj.poji.Card\"&gt;\r\n\t\t&lt;\/association&gt;\r\n\t&lt;\/resultMap&gt;\r\n\t&lt;select id=\"selectPersonById\" parameterType=\"int\" resultMap=\"personMapper\"&gt;\r\n\t\tselect * from tb_person where id = #{id}\r\n\t&lt;\/select&gt;\r\n&lt;\/mapper&gt;<\/pre>\n<p>PersonMapper.xml \u8fd8\u4f7f\u7528association\u7684\u5206\u6b65\u67e5\u8be2\u3002<\/p>\n<p>\u540c\u7406\u591a\u5bf9\u4e00\uff0c\u4e5f\u662f\u4e00\u6837<\/p>\n<p>\u53ea\u8981\u90a3\u4e2apojo\u51fa\u73b0private Card card_one;<\/p>\n<p>\u5373\u4f7f\u7528association<\/p>\n<hr \/>\n<p>collection \u4e00\u5bf9\u591a\u548cassociation\u7684\u591a\u5bf9\u4e00\u5173\u7cfb<\/p>\n<p>\u5b66\u751f\u548c\u73ed\u7ea7\u7684\u4e00\u5bf9\u591a\u7684\u4f8b\u5b50<\/p>\n<p>pojo\u7c7b<\/p>\n<pre class=\"lang:default decode:true\">package com.glj.pojo;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\n\r\npublic class Clazz implements Serializable{\r\n\tprivate Integer id;\r\n\tprivate String code;\r\n\tprivate String name;\r\n        \/\/\u73ed\u7ea7\u4e0e\u5b66\u751f\u662f\u4e00\u5bf9\u591a\u7684\u5173\u7cfb\r\n\tprivate List&lt;Student&gt; students;\r\n\/\/\u7701\u7565set\/get\u65b9\u6cd5\r\n}\r\n<\/pre>\n<pre class=\"lang:default decode:true \">package com.glj.pojo;\r\n\r\nimport java.io.Serializable;\r\n\r\npublic class Student implements Serializable {\r\n\tprivate Integer id;\r\n\tprivate String name;\r\n\tprivate String sex;\r\n\tprivate Integer age;\r\n        \/\/\u5b66\u751f\u4e0e\u73ed\u7ea7\u662f\u591a\u5bf9\u4e00\u7684\u5173\u7cfb\r\n\tprivate Clazz clazz;\r\n\/\/\u7701\u7565set\/get\u65b9\u6cd5\r\n}\r\n<\/pre>\n<pre class=\"lang:default decode:true \" title=\"ClazzMapper.xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!DOCTYPE mapper\r\n    PUBLIC \"-\/\/mybatis.org\/\/DTD Mapper 3.0\/\/EN\"\r\n    \"http:\/\/mybatis.org\/dtd\/mybatis-3-mapper.dtd\"&gt;\r\n&lt;mapper namespace=\"com.glj.mapper.ClazzMapper\"&gt;\r\n\t&lt;select id=\"selectClazzById\" parameterType=\"int\" resultMap=\"clazzResultMap\"&gt;\r\n\t\tselect * from tb_clazz where id = #{id}\r\n\t&lt;\/select&gt;\r\n\t&lt;resultMap type=\"com.glj.pojo.Clazz\" id=\"clazzResultMap\"&gt;\r\n\t\t&lt;id property=\"id\" column=\"id\"\/&gt;\r\n\t\t&lt;result property=\"code\" column=\"code\"\/&gt;\r\n\t\t&lt;result property=\"name\" column=\"name\"\/&gt;\r\n\t\t&lt;!-- property: \u6307\u7684\u662f\u96c6\u5408\u5c5e\u6027\u7684\u503c, ofType\uff1a\u6307\u7684\u662f\u96c6\u5408\u4e2d\u5143\u7d20\u7684\u7c7b\u578b --&gt;\r\n\t\t&lt;collection property=\"students\" ofType=\"com.glj.pojo.Student\"\r\n\t\tcolumn=\"id\" javaType=\"ArrayList\"\r\n\t\tfetchType=\"lazy\" select=\"com.glj.mapper.StudentMapper.selectStudentByClazzId\"&gt;\r\n\t\t\t&lt;id property=\"id\" column=\"id\"\/&gt;\r\n\t\t\t&lt;result property=\"name\" column=\"name\"\/&gt;\r\n\t\t\t&lt;result property=\"sex\" column=\"sex\"\/&gt;\r\n\t\t\t&lt;result property=\"age\" column=\"age\"\/&gt;\r\n\t\t&lt;\/collection&gt;\r\n\t&lt;\/resultMap&gt;\r\n&lt;\/mapper&gt;<\/pre>\n<pre class=\"lang:default decode:true \" title=\"ClazzMapper\u63a5\u53e3\">package com.glj.mapper;\r\n\r\nimport com.glj.pojo.Clazz;\r\n\r\npublic interface ClazzMapper {\r\n\tClazz selectClazzById(Integer id);\r\n}\r\n<\/pre>\n<p>ClazzMapper\u4f7f\u7528\u5230\u4e86\u96c6\u5408-collection \u5373\u4e3a\u4e00\u5bf9\u591a\uff0c\u4e00\u4e2a\u73ed\u7ea7\u9762\u5bf9\u591a\u4e2a\u5b66\u751f<\/p>\n<pre class=\"lang:default decode:true \" title=\"StudentMapper.xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!DOCTYPE mapper\r\n    PUBLIC \"-\/\/mybatis.org\/\/DTD Mapper 3.0\/\/EN\"\r\n    \"http:\/\/mybatis.org\/dtd\/mybatis-3-mapper.dtd\"&gt;\r\n&lt;mapper namespace=\"com.glj.mapper.StudentMapper\"&gt;\r\n\t&lt;select id=\"selectStudentById\" parameterType=\"int\" resultMap=\"studentResultMap\"&gt;\r\n\t\tselect * from tb_clazz c,tb_student s where c.id = s.id and s.id = #{id}\r\n\t&lt;\/select&gt;\r\n\t&lt;select id=\"selectStudentByClazzId\" parameterType=\"int\" resultMap=\"studentResultMap\"&gt;\r\n\t\tselect * from tb_student where clazz_id = #{id}\r\n\t&lt;\/select&gt;\r\n\t&lt;resultMap type=\"com.glj.pojo.Student\" id=\"studentResultMap\"&gt;\r\n\t\t&lt;id property=\"id\" column=\"id\"\/&gt;\r\n\t\t&lt;result property=\"name\" column=\"name\"\/&gt;\r\n\t\t&lt;result property=\"sex\" column=\"sex\"\/&gt;\r\n\t\t&lt;result property=\"age\" column=\"age\"\/&gt;\r\n\t\t&lt;association property=\"clazz\" javaType=\"com.glj.pojo.Clazz\"&gt;\r\n\t\t\t&lt;id property=\"id\" column=\"id\"\/&gt;\r\n\t\t\t&lt;result property=\"code\" column=\"code\"\/&gt;\r\n\t\t\t&lt;result property=\"name\" column=\"name\"\/&gt;\r\n\t\t&lt;\/association&gt;\r\n\t&lt;\/resultMap&gt;\r\n&lt;\/mapper&gt;<\/pre>\n<pre class=\"lang:default decode:true \" title=\"StudentMapper\u63a5\u53e3\">package com.glj.mapper;\r\n\r\nimport com.glj.pojo.Student;\r\n\r\npublic interface StudentMapper {\r\n\tStudent selectStudentById(Integer id); \r\n}\r\n<\/pre>\n<p>StudentMapper\u5219\u662f\u4e0e\u73ed\u7ea7\u4e3a\u591a\u5bf9\u4e00\u5173\u7cfb\uff0c\u6240\u4ee5\u4f7f\u7528\u4e86\u5173\u8054-association<\/p>\n<hr \/>\n<p>\u55ef\uff0c\u5e0c\u671b\u6211\u4ee5\u540e\u53c8\u4e0d\u8bb0\u5f97\u4e8c\u8005\u7684\u5173\u7cfb\u65f6,\u80fd\u611f\u8c22\u73b0\u5728\u603b\u7ed3\u7684\u81ea\u5df1<\/p>\n<p>\u9644\u4e0a\u4e00\u5f20mybatis\u7684\u7c7b\u578b\u522b\u540d\u56fe<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/199604.com\/wp-content\/uploads\/2017\/10\/985599-20160719174815763-1552090814.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"596\" height=\"610\" class=\"alignnone size-full wp-image-713\" data-original=\"https:\/\/199604.com\/wp-content\/uploads\/2017\/10\/985599-20160719174815763-1552090814.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\"  sizes=\"auto, (max-width: 596px) 100vw, 596px\" \/><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\u4e00\u76f4\u628acollection\u548cassociation\u5f04\u6df7\uff0c\u6240\u4ee5\u4e3a\u4e86\u589e\u5f3a\u81ea\u5df1\u7684\u8bb0\u5fc6\uff0c\u5c31\u64b8\u4e00\u4e2a\u5173\u7cfb\u51fa\u6765\u7b97\u662f\u603b\u7ed3\u7f62 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[130],"tags":[160,159,153],"class_list":["post-709","post","type-post","status-publish","format-standard","hentry","category-java","tag-association","tag-collection","tag-mybatis"],"_links":{"self":[{"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/posts\/709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/comments?post=709"}],"version-history":[{"count":5,"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/posts\/709\/revisions"}],"predecessor-version":[{"id":715,"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/posts\/709\/revisions\/715"}],"wp:attachment":[{"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/media?parent=709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/categories?post=709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/199604.com\/wp-json\/wp\/v2\/tags?post=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}