{"id":6412,"date":"2022-07-13T23:27:14","date_gmt":"2022-07-13T15:27:14","guid":{"rendered":"http:\/\/123.57.164.21\/?p=6412"},"modified":"2022-07-13T23:27:14","modified_gmt":"2022-07-13T15:27:14","slug":"mybatis%e4%b8%ad%e5%bc%ba%e5%a4%a7%e7%9a%84resultmap","status":"publish","type":"post","link":"https:\/\/92it.top\/?p=6412","title":{"rendered":"Mybatis\u4e2d\u5f3a\u5927\u7684resultMap"},"content":{"rendered":"\n<p>\u8f6c\u8f7d\uff1ahttps:\/\/zhuanlan.zhihu.com\/p\/79153088<\/p>\n\n\n\n<p><strong>\u524d\u8a00<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u5728<code>Mybatis<\/code>\u4e2d\uff0c\u6709\u4e00\u4e2a\u5f3a\u5927\u7684\u529f\u80fd\u5143\u7d20<code>resultMap<\/code>\u3002\u5f53\u6211\u4eec\u5e0c\u671b\u5c06<code>JDBC ResultSets<\/code>\u4e2d\u7684\u6570\u636e\uff0c\u8f6c\u5316\u4e3a\u5408\u7406\u7684Java\u5bf9\u8c61\u65f6\uff0c\u4f60\u5c31\u80fd\u611f\u53d7\u5230\u5b83\u7684\u975e\u51e1\u4e4b\u5904\u3002\u6b63\u5982\u5176\u5b98\u65b9\u6240\u8ff0\u7684\u90a3\u6837\uff1a<br><code>resultMap<\/code>\u5143\u7d20\u662f <code>MyBatis<\/code> \u4e2d\u6700\u91cd\u8981\u6700\u5f3a\u5927\u7684\u5143\u7d20\u3002\u5b83\u53ef\u4ee5\u8ba9\u4f60\u4ece 90% \u7684 <code>JDBC ResultSets<\/code> \u6570\u636e\u63d0\u53d6\u4ee3\u7801\u4e2d\u89e3\u653e\u51fa\u6765\uff0c\u5e76\u5728\u4e00\u4e9b\u60c5\u5f62\u4e0b\u5141\u8bb8\u4f60\u8fdb\u884c\u4e00\u4e9b JDBC \u4e0d\u652f\u6301\u7684\u64cd\u4f5c\u3002\u5b9e\u9645\u4e0a\uff0c\u5728\u4e3a\u4e00\u4e9b\u6bd4\u5982\u8fde\u63a5\u7684\u590d\u6742\u8bed\u53e5\u7f16\u5199\u6620\u5c04\u4ee3\u7801\u7684\u65f6\u5019\uff0c\u4e00\u4efd <code>resultMap<\/code> \u80fd\u591f\u4ee3\u66ff\u5b9e\u73b0\u540c\u7b49\u529f\u80fd\u7684\u957f\u8fbe\u6570\u5343\u884c\u7684\u4ee3\u7801\u3002<code>ResultMap<\/code> \u7684\u8bbe\u8ba1\u601d\u60f3\u662f\uff0c\u5bf9\u4e8e\u7b80\u5355\u7684\u8bed\u53e5\u6839\u672c\u4e0d\u9700\u8981\u914d\u7f6e\u663e\u5f0f\u7684\u7ed3\u679c\u6620\u5c04\uff0c\u800c\u5bf9\u4e8e\u590d\u6742\u4e00\u70b9\u7684\u8bed\u53e5\u53ea\u9700\u8981\u63cf\u8ff0\u5b83\u4eec\u7684\u5173\u7cfb\u5c31\u884c\u4e86\u3002<\/p>\n\n\n\n<p><strong>\u4e00\u3001\u5b57\u6bb5\u6620\u5c04<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u5728<code>Mybatis<\/code>\u4e2d\uff0c\u6700\u7b80\u5355\u7684\u7ed3\u679c\u6620\u5c04\u65b9\u5f0f\uff0c\u5c31\u662f\u901a\u8fc7\u7c7b\u578b\u522b\u540d<code>typeAliases<\/code>\u6765\u5904\u7406\u3002<br>\u5982\u679c\u8981\u8fd9\u6837\u505a\uff0c\u90a3\u4e48\u7b2c\u4e00\u6b65\u9700\u8981\u914d\u7f6e\u5b9e\u4f53\u7c7b\u5305\u7684\u8def\u5f84\uff1a<code>mybatis.type-aliases-package=com.xxx.entity<\/code><br>\u8be5\u8def\u5f84\u4e0b\u7684\u6240\u6709\u7c7b\uff0c\u5c31\u4f1a\u88ab\u6ce8\u518c\u5230<code>TYPE_ALIASES\u5bb9\u5668<\/code>\u3002\u6211\u4eec\u5728\u6307\u5b9a\u8fd4\u56de\u503c\u7c7b\u578b\u7684\u65f6\u5019\uff0c\u5c31\u76f4\u63a5\u7528\u522b\u540d\u5373\u53ef\u3002<\/p>\n\n\n\n<p>\u6bd4\u5982\uff0c\u6211\u4eec\u6709\u4e00\u4e2a<code>User<\/code>\u7c7b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Data\npublic class User {\n    private String id;\n    private String username;\n    private String password;\n    private String address;\n    private String email;\n}<\/pre>\n\n\n\n<p>\u5982\u679c\u6570\u636e\u5e93\u4e2d\u8868\u7684\u5b57\u6bb5\u4e0e<code>User<\/code>\u7c7b\u7684\u5c5e\u6027\u540d\u79f0\u4e00\u81f4\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u4f7f\u7528<code>resultType<\/code>\u6765\u8fd4\u56de\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;select id=\"getUsers\" resultType=\"User\">\n\tSELECT\n\t\tu.id,\n\t\tu.username,\n\t\tu.password,\n\t\tu.address,\n\t\tu.email\n\tFROM\n\t\tUSER u\n&lt;\/select><\/pre>\n\n\n\n<p>\u5f53\u7136\uff0c\u8fd9\u662f\u7406\u60f3\u72b6\u6001\u4e0b\uff0c\u5c5e\u6027\u548c\u5b57\u6bb5\u540d\u90fd\u5b8c\u5168\u4e00\u81f4\u7684\u60c5\u51b5\u3002\u4f46\u4e8b\u5b9e\u4e0a\uff0c\u4e0d\u4e00\u81f4\u7684\u60c5\u51b5\u662f\u6709\u7684\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u7684<code>resultMap<\/code>\u5c31\u8981\u767b\u573a\u4e86\u3002<\/p>\n\n\n\n<p>\u5982\u679c<code>User<\/code>\u7c7b\u4fdd\u6301\u4e0d\u53d8\uff0c\u4f46<code>SQL<\/code>\u8bed\u53e5\u53d1\u751f\u4e86\u53d8\u5316\uff0c\u5c06<code>id<\/code>\u6539\u6210\u4e86<code>uid<\/code>\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;select id=\"getUsers\" resultType=\"User\">\n\tSELECT\n\t\tu.id as uid,\n\t\tu.username,\n\t\tu.password,\n\t\tu.address,\n\t\tu.email\n\tFROM\n\t\tUSER u\n&lt;\/select><\/pre>\n\n\n\n<p>\u90a3\u4e48\uff0c\u5728\u7ed3\u679c\u96c6\u4e2d\uff0c\u6211\u4eec\u5c06\u4f1a\u4e22\u5931<code>id<\/code>\u6570\u636e\u3002\u8fd9\u65f6\u5019\u6211\u4eec\u5c31\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a<code>resultMap<\/code>\uff0c\u6765\u6620\u5c04\u4e0d\u4e00\u6837\u7684\u5b57\u6bb5\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;resultMap id=\"getUserByIdMap\" type=\"User\">\n\t&lt;result property=\"id\" column=\"uid\">&lt;\/result>\n&lt;\/resultMap><\/pre>\n\n\n\n<p>\u7136\u540e\uff0c\u6211\u4eec\u628a\u4e0a\u9762\u7684<code>select<\/code>\u8bed\u53e5\u4e2d\u7684<code>resultType<\/code>\u4fee\u6539\u4e3a<code>resultMap=\"getUserByIdMap\"<\/code>\u3002<\/p>\n\n\n\n<p>\u8fd9\u91cc\u9762<code>column<\/code>\u5bf9\u5e94\u7684\u662f\u6570\u636e\u5e93\u7684\u5217\u540d\u6216\u522b\u540d\uff1b<code>property<\/code>\u5bf9\u5e94\u7684\u662f\u7ed3\u679c\u96c6\u7684\u5b57\u6bb5\u6216\u5c5e\u6027\u3002<\/p>\n\n\n\n<p>\u8fd9\u5c31\u662f<code>resultMap<\/code>\u6700\u7b80\u5355\uff0c\u4e5f\u6700\u57fa\u7840\u7684\u7528\u6cd5\uff1a\u5b57\u6bb5\u6620\u5c04\u3002<\/p>\n\n\n\n<p>\u4e0b\u9762\uff0c\u6211\u4eec\u770b\u770b\u5176\u4ed6\u51e0\u79cd\u6807\u7b7e\u90fd\u662f\u600e\u4e48\u5e94\u7528\u7684\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/123.57.164.21\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-165.png\" alt=\"\" class=\"wp-image-6414\" width=\"405\" height=\"210\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-165.png 774w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-165-300x155.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-165-768x397.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-165-230x119.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-165-350x181.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-165-480x248.png 480w\" sizes=\"(max-width: 405px) 100vw, 405px\" \/><\/figure><\/div>\n\n\n\n<p><strong>\u4e8c\u3001\u6784\u9020\u65b9\u6cd5<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u5982\u679c\u4f60\u5e0c\u671b\u5c06\u7ed3\u679c\u6ce8\u5165\u6784\u9020\u65b9\u6cd5\u91cc\uff0c\u5c31\u53ef\u4ee5\u7528\u5230<code>constructor<\/code>\u5143\u7d20\u3002<\/p>\n\n\n\n<p>\u6bd4\u5982\uff0c\u6211\u4eec\u7684<code>User<\/code>\u7c7b\u589e\u52a0\u4e86\u4e00\u4e2a\u6784\u9020\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public User(String id, String name) {\n\tthis.id = id+\"--------\";\n\tthis.username = name+\"--------\";\n}<\/pre>\n\n\n\n<p>\u6211\u4eec\u9700\u8981\u5728<code>resultMap<\/code>\u4e2d\u5b9a\u4e49<code>constructor<\/code>\u5143\u7d20\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;resultMap id=\"getUserByIdMap\" type=\"User\">\n\t&lt;constructor>\n\t\t&lt;idArg column=\"id\" name=\"id\" javaType=\"string\">&lt;\/idArg>\n\t\t&lt;arg column=\"username\" name=\"name\" javaType=\"string\">&lt;\/arg>\n\t&lt;\/constructor>\n&lt;\/resultMap><\/pre>\n\n\n\n<p>\u5176\u4e2d\uff0c<code>column<\/code>\u4ee3\u8868\u6570\u636e\u5e93\u5b57\u6bb5\u540d\u79f0\u6216\u8005\u522b\u540d\uff1b<code>name<\/code>\u5219\u662f\u6784\u9020\u65b9\u6cd5\u4e2d\u7684\u53c2\u6570\u540d\u79f0\uff1b<code>javaType<\/code>\u6307\u5b9a\u4e86\u53c2\u6570\u7684\u7c7b\u578b\u3002<\/p>\n\n\n\n<p>\u5982\u4f60\u6240\u60f3\uff0c\u8fd9\u6837\u6307\u5b9a\u6784\u9020\u65b9\u6cd5\u540e\uff0c\u6211\u4eec\u7ed3\u679c\u96c6\u4e2d\u7684<code>id\u548cusername<\/code>\u5c5e\u6027\u90fd\u4f1a\u53d1\u751f\u53d8\u5316\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"id\": \"1001--------\",\n    \"username\": \"\u540e\u7fbf--------\",\n    \"password\": \"123456\",\n    \"address\": \"\u5317\u4eac\u5e02\u6d77\u6dc0\u533a\",\n    \"email\": \"510273027@qq.com\"\n}\n\n<\/pre>\n\n\n\n<p><br><strong>\u4e09\u3001\u5173\u8054<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u5728\u5b9e\u9645\u7684\u4e1a\u52a1\u4e2d\uff0c\u6211\u4eec\u7684\u7528\u6237\u4e00\u822c\u90fd\u4f1a\u6709\u4e00\u4e2a\u89d2\u8272\u3002\u90a3\u4e48\u5728<code>User<\/code>\u7c7b\u91cc\u9762\u4e00\u822c\u4e5f\u662f\u4ee5\u4e00\u4e2a\u5b9e\u4f53\u7c7b\u6765\u8868\u793a\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Data\npublic class User {\n    \/\/\u7701\u7565\u7528\u6237\u5c5e\u6027...\n\t\n    \/\/\u89d2\u8272\u4fe1\u606f\n    private Role role;\n}<\/pre>\n\n\n\n<p>\u6211\u4eec\u5728\u67e5\u8be2\u7528\u6237\u7684\u65f6\u5019\uff0c\u5982\u679c\u4e5f\u5e0c\u671b\u770b\u5230\u5b83\u7684\u89d2\u8272\u4fe1\u606f\uff0c\u6211\u4eec\u4f1a\u8fd9\u6837\u6765\u5199\u67e5\u8be2\u8bed\u53e5\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;select id=\"getUserById\" resultType=\"User\">\n        SELECT\n            u.id,\n            u.username,\n            u.password,\n            u.address,\n            u.email,\n            r.id as 'role_id',\n            r.name as 'role_name'\n        FROM\n            USER u\n                LEFT JOIN user_roles ur ON u.id = ur.user_id\n                LEFT JOIN role r ON r.id = ur.role_id\n        where u.id=#{id}\n    &lt;\/select><\/pre>\n\n\n\n<p>\u5982\u4e0a\uff0c\u5c31\u8981\u67e5\u8be2\u5355\u4e2a\u7528\u6237\u4ee5\u53ca\u7528\u6237\u7684\u89d2\u8272\u4fe1\u606f\u3002\u4e0d\u8fc7\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u4e0d\u80fd\u7528<code>resultType=User<\/code>\u6765\u8fd4\u56de\u3002<\/p>\n\n\n\n<p>\u6bd5\u7adf\uff0c<code>User<\/code>\u7c7b\u4e2d\u53ea\u6709\u4e00\u4e2a<code>Role<\/code>\u5bf9\u8c61\uff0c\u5e76\u6ca1\u6709<code>role_id\u548crole_name<\/code>\u5b57\u6bb5\u5c5e\u6027\u3002<\/p>\n\n\n\n<p>\u6240\u4ee5\uff0c\u6211\u4eec\u8981\u4f7f\u7528<code>association<\/code>\u6765\u5173\u8054\u5b83\u4eec\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;resultMap id=\"userMap\" type=\"User\">\n\t&lt;id property=\"id\" column=\"id\">&lt;\/id>\n\t&lt;result property=\"username\" column=\"username\">&lt;\/result>\n\t&lt;result property=\"password\" column=\"password\">&lt;\/result>\n\t&lt;result property=\"address\" column=\"address\">&lt;\/result>\n\t&lt;result property=\"email\" column=\"email\">&lt;\/result>\n\t\n\t&lt;association property=\"role\" javaType=\"Role\">\n\t\t&lt;id property=\"id\" column=\"role_id\">&lt;\/id>\n\t\t&lt;result property=\"name\" column=\"role_name\">&lt;\/result>\n\t&lt;\/association>\n&lt;\/resultMap><\/pre>\n\n\n\n<p>\u6700\u540e\u6211\u4eec\u5c31\u53ef\u4ee5\u5c06\u89d2\u8272\u4fe1\u606f\u4e00\u5757\u663e\u793a\u51fa\u6765\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"id\": \"1001\",\n    \"username\": \"\u540e\u7fbf\",\n    \"password\": \"123456\",\n    \"address\": \"\u5317\u4eac\u5e02\u6d77\u6dc0\u533a\",\n    \"email\": \"3553154544@qq.com\",\n    \"role\": {\n        \"id\": \"3\",\n        \"name\": \"\u5c04\u624b\"\n    }\n}<\/pre>\n\n\n\n<p>\u4e8b\u5b9e\u4e0a\uff0c\u5982\u679c\u4f60\u786e\u5b9a\u5173\u8054\u4fe1\u606f\u662f<code>\u4e00\u5bf9\u4e00<\/code>\u7684\u60c5\u51b5\uff0c\u6709\u4e2a\u66f4\u7b80\u4fbf\u7684\u65b9\u6cd5\u53ef\u4ee5\u66ff\u4ee3<code>association<\/code>\uff0c\u6211\u4eec\u5728\u672c\u6587\u7684<code>\u7b2c\u4e94\u90e8\u5206-\u81ea\u52a8\u586b\u5145\u5173\u8054\u5bf9\u8c61<\/code>\u518d\u770b\u5b83\u662f\u600e\u4e48\u5b9e\u73b0\u7684\u3002<\/p>\n\n\n\n<p><strong>\u56db\u3001\u96c6\u5408<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<ul><li><strong>\u96c6\u5408\u7684\u5d4c\u5957\u7ed3\u679c\u6620\u5c04<\/strong><\/li><\/ul>\n\n\n\n<p>\u4e0a\u9762\u6211\u4eec\u770b\u5230\u4e00\u4e2a\u7528\u6237<code>\u540e\u7fbf<\/code>\uff0c\u5b83\u7684\u89d2\u8272\u662f<code>\u5c04\u624b<\/code>\uff1b\u4f46\u5927\u90e8\u5206\u65f6\u5019\uff0c\u6211\u4eec\u6bcf\u4e2a\u4eba\u90fd\u4e0d\u53ef\u80fd\u53ea\u62e5\u6709\u4e00\u79cd\u89d2\u8272\u3002\u6240\u4ee5\uff0c\u6211\u4eec\u9700\u8981\u5c06<code>User<\/code>\u7c7b\u4e2d\u7684\u89d2\u8272\u5c5e\u6027\u7684\u7c7b\u578b\u6539\u6210<code>List<\/code>\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Data\npublic class User {\n    \/\/\u7701\u7565\u7528\u6237\u5c5e\u6027...\n\t\n    \/\/\u89d2\u8272\u4fe1\u606f\n    private List&lt;Role> roles;\n}<\/pre>\n\n\n\n<p>\u73b0\u5728\u5c31\u53d8\u6210\u4e86\u4e00\u4e2a\u7528\u6237\u5bf9\u5e94\u591a\u4e2a\u89d2\u8272\uff0c\u6240\u4ee5\u5c31\u4e0d\u662f\u7b80\u5355\u7684<code>association<\/code>\u3002<\/p>\n\n\n\n<p>\u56e0\u4e3a<code>association<\/code>\u5904\u7406\u7684\u662f<code>\u6709\u4e00\u4e2a<\/code>\u7c7b\u578b\u7684\u5173\u8054\uff1b\u800c\u6211\u4eec\u8fd9\u91cc\u662f<code>\u6709\u591a\u4e2a<\/code>\u7c7b\u578b\u7684\u5173\u8054\uff0c\u6240\u4ee5\u5c31\u9700\u8981\u7528\u5230<code>collection<\/code>\u5c5e\u6027\u3002<\/p>\n\n\n\n<p>\u6211\u4eec\u6574\u4f53\u7684<code>resultMap<\/code>\u4f1a\u53d8\u6210\u4e0b\u9762\u8fd9\u6837\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;resultMap id=\"userMap\" type=\"User\">\n\t&lt;id property=\"id\" column=\"id\">&lt;\/id>\n\t&lt;result property=\"username\" column=\"username\">&lt;\/result>\n\t&lt;result property=\"password\" column=\"password\">&lt;\/result>\n\t&lt;result property=\"address\" column=\"address\">&lt;\/result>\n\t&lt;result property=\"email\" column=\"email\">&lt;\/result>\n\t\n\t&lt;collection property=\"roles\" ofType=\"Role\">\n\t\t&lt;id property=\"id\" column=\"role_id\">&lt;\/id>\n\t\t&lt;result property=\"name\" column=\"role_name\">&lt;\/result>\n\t&lt;\/collection>\n&lt;\/resultMap><\/pre>\n\n\n\n<p>\u8fd9\u6837\u7684\u8bdd\uff0c\u5373\u4fbf\u4f60\u6709\u591a\u4e2a\u89d2\u8272\u4e5f\u53ef\u4ee5\u88ab\u6b63\u786e\u663e\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"id\": \"1003\",\n    \"username\": \"\u8c82\u8749\",\n    \"password\": \"123456\",\n    \"address\": \"\u5317\u4eac\u5e02\u4e1c\u57ce\u533a\",\n    \"email\": \"510273027@qq.com\",\n    \"roles\": [\n        {\n            \"id\": \"1\",\n            \"name\": \"\u4e2d\u5355\"\n        },\n        {\n            \"id\": \"2\",\n            \"name\": \"\u6253\u91ce\"\n        }\n    ]\n}<\/pre>\n\n\n\n<ul><li><strong>\u96c6\u5408\u7684\u5d4c\u5957 Select \u67e5\u8be2<\/strong><\/li><\/ul>\n\n\n\n<p>\u5728\u5927\u90e8\u5206\u4e1a\u52a1\u7cfb\u7edf\u4e2d\uff0c\u6211\u4eec\u90fd\u4f1a\u6709\u4e00\u4e2a\u83dc\u5355\u7684\u8868\uff0c\u6bd4\u5982\u50cf\u4e0b\u9762\u8fd9\u6837\uff0c\u4e00\u5f20<code>Menu<\/code>\u8868\uff1a<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/123.57.164.21\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-1024x770.png\" alt=\"\" class=\"wp-image-6417\" width=\"463\" height=\"347\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-1024x770.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-300x226.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-768x577.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-830x624.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-230x173.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-350x263.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166-480x361.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-166.png 1096w\" sizes=\"(max-width: 463px) 100vw, 463px\" \/><\/figure><\/div>\n\n\n\n<p>\u8fd9\u91cc\u6211\u4eec\u7ed9\u83dc\u5355\u5206\u4e3a\u4e24\u7ea7\u3002\u6211\u4eec\u7ed9\u524d\u7aef\u8fd4\u56de\u83dc\u5355\u7684\u65f6\u5019\uff0c\u4e5f\u662f\u9700\u8981\u5206\u7ea7\u7684\uff0c\u4e0d\u53ef\u80fd\u5c06\u8fd97\u6761\u6570\u636e\u5e73\u7ea7\u5c55\u793a\u3002\u90a3\u4e48\uff0c\u5728\u8fd9\u91cc\u6211\u4eec\u7684<code>Menu<\/code>\u5b9e\u4f53\u7c7b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Data\npublic class Menu {\n    private String id;\n    private String name;\n    private String url;\n    private String parent_id;\n    private List&lt;Menu> childMenu;\n}<\/pre>\n\n\n\n<p>\u4e00\u7ea7\u83dc\u5355\uff0c\u5305\u542b\u4e00\u4e2a\u4e8c\u7ea7\u83dc\u5355\u7684\u5217\u8868\uff0c\u8fd9\u91cc\u7528<code>childMenu<\/code>\u6765\u8868\u793a\u3002<\/p>\n\n\n\n<p><code>SQL<\/code>\u8bed\u53e5\u4e2d\uff0c\u5982\u679c\u6ca1\u6709<code>parent_id<\/code>\u5b57\u6bb5\u5c5e\u6027\uff0c\u6211\u4eec\u5c31\u5148\u67e5\u6240\u6709\u7684\u4e00\u7ea7\u83dc\u5355\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;select id=\"getMenus\" resultMap=\"menusMap\">\n\tSELECT\n\t\tm.id,\n\t\tm.name,\n\t\tm.url,\n\t\tm.parent_id\n\tFROM\n\t\tm_menu m\n\twhere 1=1\n\t&lt;choose>\n\t\t&lt;when test=\"parent_id!=null\">\n\t\t\tand m.parent_id = #{parent_id}\n\t\t&lt;\/when>\n\t\t&lt;otherwise>\n\t\t\tand m.parent_id = '0'\n\t\t&lt;\/otherwise>\n\t&lt;\/choose>\n&lt;\/select><\/pre>\n\n\n\n<p>\u8fd9\u4e2a\u67e5\u8be2\u8bed\u53e5\uff0c\u5728\u4e0d\u4f20\u8f93\u4efb\u4f55\u53c2\u6570\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4f1a\u5f97\u5230\u4e24\u6761\u4e00\u7ea7\u83dc\u5355\u7684\u6570\u636e\u3002<\/p>\n\n\n\n<p>\u90a3\u4e48\u5728\u53ea\u8c03\u7528\u6b64\u65b9\u6cd5\u4e00\u6b21\u7684\u60c5\u51b5\u4e0b\uff0c\u600e\u4e48\u628a\u6240\u6709\u7684\u83dc\u5355\u4fe1\u606f\u67e5\u8be2\u51fa\u6765\uff0c\u5e76\u6309\u5c42\u7ea7\u5c55\u793a\u5462\uff1f<\/p>\n\n\n\n<p>\u6211\u4eec\u6765\u770b<code>menusMap<\/code>\u7684\u5b9a\u4e49\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;resultMap id=\"menusMap\" type=\"Menu\">\n\t&lt;id property=\"id\" column=\"id\">&lt;\/id>\n\t&lt;result property=\"name\" column=\"name\">&lt;\/result>\n\t&lt;result property=\"url\" column=\"url\">&lt;\/result>\n\t&lt;result property=\"m_desc\" column=\"m_desc\">&lt;\/result>\n\t&lt;result property=\"parent_id\" column=\"parent_id\">&lt;\/result>\n\t\n\t&lt;collection property=\"childMenu\" ofType=\"Menu\" select=\"getMenus\"  column=\"{parent_id=id}\">&lt;\/collection>\n&lt;\/resultMap><\/pre>\n\n\n\n<p>\u91cd\u70b9\u6765\u770b<code>collection<\/code>\u5143\u7d20\uff1a<\/p>\n\n\n\n<ul><li><code>property=\"childMenu\"<\/code> \u5bf9\u5e94\u7684\u662f\u83dc\u5355\u4e2d\u7684\u5b50\u7ea7\u83dc\u5355\u5217\u8868\uff1b<\/li><li><code>ofType=\"Menu\"<\/code> \u5bf9\u5e94\u8fd4\u56de\u6570\u636e\u7684\u7c7b\u578b\uff1b<\/li><li><code>select=\"getMenus\"<\/code> \u6307\u5b9a\u4e86<code>SELECT<\/code>\u8bed\u53e5\u7684id\uff1b<\/li><li><code>column=\"{parent_id=id}\"<\/code> \u5219\u662f\u53c2\u6570\u7684\u8868\u8fbe\u5f0f\u3002<\/li><\/ul>\n\n\n\n<p>\u8fd9\u4e2a<code>collection<\/code>\u6574\u4f53\u7684\u542b\u4e49\u53ef\u4ee5\u8fd9\u6837\u7406\u89e3\uff1a<\/p>\n\n\n\n<p>\u901a\u8fc7<code>getMenus<\/code>\u8fd9\u4e2a<code>SELECT\u8bed\u53e5<\/code>\u6765\u83b7\u53d6\u4e00\u7ea7\u83dc\u5355\u4e2d\u7684<code>childMenu<\/code>\u5c5e\u6027\u7ed3\u679c\uff1b\u5728\u4e0a\u9762\u7684<code>SELECT\u8bed\u53e5<\/code>\u4e2d\uff0c\u9700\u8981\u4f20\u9012\u4e00\u4e2a<code>parent_id<\/code>\u53c2\u6570\uff1b\u8fd9\u4e2a\u53c2\u6570\u7684\u503c\u5c31\u662f\u4e00\u7ea7\u83dc\u5355\u4e2d\u7684<code>id<\/code>\u3002<\/p>\n\n\n\n<p>\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5f97\u5230\u5df2\u5206\u7ea7\u7684\u6240\u6709\u83dc\u5355\u4fe1\u606f\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[\n    {\n        \"id\": \"1\",\n        \"name\": \"\u7cfb\u7edf\u7ba1\u7406\",\n        \"parent_id\": \"0\",\n        \"childMenu\": [\n            {\n                \"id\": \"1001\",\n                \"name\": \"\u7528\u6237\u7ba1\u7406\",\n                \"url\": \"\/user\",\n                \"parent_id\": \"1\"\n            },\n            {\n                \"id\": \"1002\",\n                \"name\": \"\u89d2\u8272\u7ba1\u7406\",\n                \"url\": \"\/role\",\n                \"parent_id\": \"1\"\n            },\n            {\n                \"id\": \"1003\",\n                \"name\": \"\u5355\u4f4d\u7ba1\u7406\",\n                \"url\": \"\/employer\",\n                \"parent_id\": \"1\"\n            }\n        ]\n    },\n    {\n        \"id\": \"2\",\n        \"name\": \"\u5e73\u53f0\u76d1\u63a7\",\n        \"parent_id\": \"0\",\n        \"childMenu\": [\n            {\n                \"id\": \"2001\",\n                \"name\": \"\u7cfb\u7edf\u76d1\u63a7\",\n                \"url\": \"\/system\/monitor\",\n                \"parent_id\": \"2\"\n            },\n            {\n                \"id\": \"2002\",\n                \"name\": \"\u6570\u636e\u76d1\u63a7\",\n                \"url\": \"\/data\/monitor\",\n                \"parent_id\": \"2\"\n            }\n        ]\n    }\n]<\/pre>\n\n\n\n<p><strong>\u4e94\u3001\u81ea\u52a8\u586b\u5145\u5173\u8054\u5bf9\u8c61<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u6211\u4eec\u77e5\u9053\uff0c\u5728<code>Mybatis<\/code>\u89e3\u6790\u8fd4\u56de\u503c\u7684\u65f6\u5019\u3002<\/p>\n\n\n\n<p>\u7b2c\u4e00\u6b65\u662f\u83b7\u53d6\u8fd4\u56de\u503c\u7c7b\u578b\uff0c\u62ff\u5230<code>Class<\/code>\u5bf9\u8c61\uff0c\u7136\u540e\u83b7\u53d6\u6784\u9020\u5668\uff0c\u8bbe\u7f6e\u53ef\u8bbf\u95ee\u5e76\u8fd4\u56de\u5b9e\u4f8b\uff0c\u7136\u540e\u53c8\u628a\u5b83\u5305\u88c5\u6210<code>MetaObject<\/code>\u5bf9\u8c61\u3002<\/p>\n\n\n\n<p>\u4ece\u6570\u636e\u5e93<code>rs<\/code>\u4e2d\u62ff\u5230\u7ed3\u679c\u4e4b\u540e\uff0c\u4f1a\u8c03\u7528<code>MetaObject.setValue(String name, Object value)<\/code> \u6765\u586b\u5145\u5bf9\u8c61\u3002<\/p>\n\n\n\n<p>\u5728\u8fd9\u8fc7\u7a0b\u4e2d\uff0c\u6709\u8da3\u7684\u662f\uff0c\u5b83\u4f1a\u4ee5<code>.<\/code>\u6765\u5206\u9694\u8fd9\u4e2a<code>name<\/code>\u5c5e\u6027\u3002<\/p>\n\n\n\n<p>\u5982\u679c<code>name<\/code>\u5c5e\u6027\u4e2d\u5305\u542b<code>.\u7b26\u53f7<\/code>\uff0c\u5c31\u627e\u5230<code>.\u7b26\u53f7<\/code>\u4e4b\u524d\u7684\u5c5e\u6027\u540d\u79f0\uff0c\u628a\u5b83\u5f53\u505a\u4e00\u4e2a\u5b9e\u4f53\u5bf9\u8c61\u6765\u5904\u7406\u3002<\/p>\n\n\n\n<p>\u53ef\u80fd\u7b14\u8005\u5728\u8fd9\u91cc\u63cf\u8ff0\u7684\u4e0d\u591f\u76f4\u89c2\uff0c\u6211\u4eec\u8fd8\u662f\u6765\u770b\u4f8b\u5b50\u3002<\/p>\n\n\n\n<p>\u5728\u672c\u6587<code>\u7b2c\u4e09\u90e8\u5206<\/code>\u4e2d\uff0c\u6211\u4eec\u6709<code>\u4e00\u4e2a\u7528\u6237\u5bf9\u5e94\u4e00\u4e2a\u89d2\u8272<\/code>\u7684\u4f8b\u5b50\u3002<\/p>\n\n\n\n<p>\u5176\u4e2d\uff0c<code>User<\/code>\u7c7b\u5b9a\u4e49\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Data\npublic class User {\n    \/\/\u7701\u7565\u7528\u6237\u5c5e\u6027...\n\t\n    \/\/\u89d2\u8272\u4fe1\u606f\n    private Role role;\n}<\/pre>\n\n\n\n<p>\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u65e0\u9700\u5b9a\u4e49<code>resultMap<\/code>\uff0c\u76f4\u63a5\u8fd4\u56de<code>resultType=User<\/code>\u5373\u53ef\u3002\u4e0d\u8fc7\u9700\u8981\u628a<code>role<\/code>\u4fe1\u606f\u7684\u522b\u540d\u4fee\u6539\u4e00\u4e0b\uff0c\u91cd\u70b9\u662f<code>.\u7b26\u53f7<\/code><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;select id=\"getUserList\" resultType=\"User\">\n\tSELECT\n\t\tu.id,\n\t\tu.username,\n\t\tu.password,\n\t\tu.address,\n\t\tu.email,\n\t\tr.id as 'role.id',\n\t\tr.name as 'role.name'\n\tFROM\n\t\tUSER u\n\t\t\tLEFT JOIN user_roles ur ON u.id = ur.user_id\n\t\t\tLEFT JOIN role r ON r.id = ur.role_id\n&lt;\/select><\/pre>\n\n\n\n<p>\u8fd9\u6837\uff0c\u5728<code>Mybatis<\/code>\u89e3\u6790\u5230<code>role.id<\/code>\u5c5e\u6027\u7684\u65f6\u5019\uff0c\u4ee5<code>.\u7b26\u53f7<\/code>\u5206\u9694\u4e4b\u540e\u53d1\u73b0\uff0c<code>role<\/code>\u522b\u540d\u5bf9\u5e94\u7684\u662f<code>Role<\/code>\u5bf9\u8c61\uff0c\u5219\u4f1a\u5148\u521d\u59cb\u5316<code>Role<\/code>\u5bf9\u8c61\uff0c\u5e76\u5c06\u503c\u8d4b\u4e88<code>id<\/code>\u5c5e\u6027\u3002<\/p>\n\n\n\n<p>\u76f8\u5173\u4ee3\u7801\u5982\u56fe\uff1a<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/123.57.164.21\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-1024x630.png\" alt=\"\" class=\"wp-image-6418\" width=\"578\" height=\"355\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-1024x630.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-300x184.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-768x472.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-830x510.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-230x141.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-350x215.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167-480x295.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2022\/07\/\u56fe\u7247-167.png 1366w\" sizes=\"(max-width: 578px) 100vw, 578px\" \/><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u8f6c\u8f7d\uff1ahttps:\/\/zhuanlan.zhihu.com\/p\/79153088 \u524d\u8a00 \u5728Mybatis\u4e2d\uff0c\u6709 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"_links":{"self":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/6412"}],"collection":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6412"}],"version-history":[{"count":5,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/6412\/revisions"}],"predecessor-version":[{"id":6420,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/6412\/revisions\/6420"}],"wp:attachment":[{"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}