{"id":576,"date":"2026-04-25T16:21:00","date_gmt":"2026-04-25T08:21:00","guid":{"rendered":"https:\/\/larkdrop.cafe\/?p=576"},"modified":"2026-06-23T11:40:58","modified_gmt":"2026-06-23T03:40:58","slug":"mybatis","status":"publish","type":"post","link":"https:\/\/larkdrop.cafe\/index.php\/2026\/04\/25\/mybatis\/","title":{"rendered":"MyBatis"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u5b66\u4e60\u76ee\u6807<\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">1. \u7406\u89e3MyBatis\u7684\u8bbe\u8ba1\u601d\u60f3<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; MyBatis\u548cJDBC\u7684\u5173\u7cfb<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u4e3a\u4f55\u5c06SQL\u8bed\u53e5\u90fd\u96c6\u4e2d\u7ba1\u7406\u5728XML\u6620\u5c04\u6587\u4ef6\u4e2d<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">2. \u719f\u6089MyBatis\u7684<strong>\u8f93\u5165\u6620\u5c04<\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u672a\u4f7f\u7528\u6ce8\u89e3<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u4f7f\u7528\u6ce8\u89e3<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; ${}\u548c#{}\u4e4b\u95f4\u7684\u533a\u522b<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">3. \u719f\u6089MyBatis\u7684<strong>\u8f93\u51fa\u6620\u5c04<\/strong><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u4e3a\u4ec0\u4e48resultType\u5199\u7684\u662f\u5355\u4e2a\u7ed3\u679c\u7684\u7c7b\u578b<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; resultType\u548cresultMap\u7684\u8054\u7cfb\u548c\u533a\u522b<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">4. \u638c\u63e1\u52a8\u6001SQL\u7684\u4f7f\u7528<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u80fd\u591f\u6839\u636e\u4f20\u5165\u7684\u503c\u975e\u7a7a\u62fc\u63a5SQL &#8211;&gt; \u6761\u4ef6\u63d2\u5165\u3001\u6761\u4ef6\u66f4\u65b0\u3001\u6761\u4ef6\u67e5\u8be2<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; foreach\u5b8c\u6210\u591a\u6761\u6570\u636e\u63d2\u5165\u548cin\u8bed\u53e5<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u83b7\u5f97\u81ea\u589e\u7684\u4e3b\u952e<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">5. \u638c\u63e1\u4e00\u5bf9\u4e00\u3001\u4e00\u5bf9\u591a\u573a\u666f\u7684\u5c01\u88c5\uff08\u81f3\u5c11\u638c\u63e1\u4e00\u79cd\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">6. \u4e86\u89e3\u61d2\u52a0\u8f7d<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">7. \u4e86\u89e3\u7f13\u5b58<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">8. \u4e86\u89e3\u6ce8\u89e3<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u524d\u7f6e\u77e5\u8bc6\u51c6\u5907<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u5e38\u7528\u7684SQL\u8bed\u53e5\u7684\u7f16\u5199\uff08CRUD\u7b49\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; JDBC\u5bf9\u5e94\u7684SQL\u5b8c\u6210\u9884\u7f16\u8bd1\u3001\u63d0\u4f9b\u53c2\u6570\u3001\u5e76\u4e14\u5b8c\u6210\u7ed3\u679c\u96c6\u7684\u5c01\u88c5<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u61d2\u52a0\u8f7d\u548c\u7acb\u5373\u52a0\u8f7d<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">MyBatis\u4ecb\u7ecd<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">SSM: Spring\u3001Spring MVC\u3001MyBaits<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">MyBatis\u672c\u662fapache\u57fa\u91d1\u4f1a\u7684\u4e00\u4e2a\u5f00\u6e90\u9879\u76eeibatis \uff0c2010\u5e74\u8fd9\u4e2a\u9879\u76ee\u6709apache\u8fc1\u79fb\u5230\u4e86google code\uff0c \u5e76\u4e14\u6539\u540d\u4e3aMybatis\u30022013\u5e7411\u6708\u4ee3\u7801\u8fc1\u79fb\u5230\u4e86github. Mybatis\u662f\u4e00\u4e2a\u57fa\u4e8eJava\u7684\u6301\u4e45\u5c42\u6846\u67b6\u3002<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Mybatis\u662f\u4e00\u4e2aORM\uff08Object-Relationship-Mapping\uff09\u6846\u67b6\u3002\uff08\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u7c7b\u548c\u8868\u4e4b\u95f4\u7684\u5173\u7cfb\uff08\u6bd4\u5982User\u7c7b\u548ccskaoyan_user\u8868\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u7c7b\u4e2d\u7684\u6210\u5458\u53d8\u91cf\u548c\u8868\u4e2d\u7684\u5217\uff08\u540d\u79f0\u3001JavaType\u548cJdbcType\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211; \u6570\u636e\u5e93\u4e2d\u4e00\u6761\u8bb0\u5f55\u548cJava\u4e2d\u7684\u4e00\u4e2a\u5b9e\u4f8b\uff08\u6bd4\u5982\u4e00\u4e2auser\u5bf9\u8c61\u548ccskaoyan_user\u8868\u4e2d\u7684\u4e00\u6761\u8bb0\u5f55\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">MyBatis \u662f\u4e00\u6b3e\u4f18\u79c0\u7684\u6301\u4e45\u5c42\u6846\u67b6\uff0c\u5b83\u652f\u6301\u81ea\u5b9a\u4e49 SQL\u3001\u5b58\u50a8\u8fc7\u7a0b\u4ee5\u53ca<strong>\u9ad8\u7ea7\u6620\u5c04<\/strong>\u3002MyBatis \u514d\u9664\u4e86\u51e0\u4e4e\u6240\u6709\u7684 JDBC \u4ee3\u7801\u4ee5\u53ca\u8bbe\u7f6e\u53c2\u6570\u548c\u83b7\u53d6\u7ed3\u679c\u96c6\u7684\u5de5\u4f5c\u3002MyBatis \u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u7684 XML \u6216\u6ce8\u89e3\u6765\u914d\u7f6e\u548c\u6620\u5c04\u539f\u59cb\u7c7b\u578b\u3001\u63a5\u53e3\u548c Java POJO\uff08Plain Old Java Objects\uff0c\u666e\u901a\u8001\u5f0f Java \u5bf9\u8c61\uff09\u4e3a\u6570\u636e\u5e93\u4e2d\u7684\u8bb0\u5f55\u3002<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ ORM\uff1aObject Relationship Mapping\u3002 \u5bf9\u8c61\u5173\u7cfb\u6620\u5c04(\u8bf4\u767d\u4e86, \u5c31\u662f\u53ef\u4ee5\u628aJava\u4e2d\u7684\u5bf9\u8c61\u6620\u5c04\u6210\u5173\u7cfb)\u3002 \u5176\u5b9eMybatis\u5c31\u662f\u4e00\u4e2a\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u628a \u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\u7684\u8bb0\u5f55\u8f6c\u5316\u4e3a Java\u5bf9\u8c61\uff0c\u628aJava\u5bf9\u8c61\u8f6c\u5316\u4e3a\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\u7684\u8bb0\u5f55\u7684\u8fd9\u4e48\u4e00\u4e2a\u6846\u67b6\u3002\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Mybatis\u5c31\u662f\u4e00\u4e2a\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u5728Java\u4ee3\u7801\u4e2d\u66f4\u52a0\u9ad8\u6548\u7684<strong>\u53bb\u64cd\u4f5c\u6570\u636e\u5e93<\/strong>\u7684\u8fd9\u4e48\u4e00\u4e2a\u6846\u67b6\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u7f51 : https:\/\/mybatis.org\/mybatis-3\/zh_CN\/index.html | https:\/\/mybatis.net.cn\/<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5165\u95e8\u6848\u4f8b(Quick start)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">JDBC<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/\u5b9a\u4e49\u4e86UserDao\u63a5\u53e3\uff0c\u6211\u4eec\u4f20\u5165id\uff0c\u53ef\u4ee5\u67e5\u8be2user\u7684\u8bb0\u5f55\u51fa\u6765\npublic interface UserDao {\n    User selectByPrimaryKey(Integer id) throws Exception;\n}\n\/\/ \u5047\u5982\u6211\u4eec\u5b9a\u4e49\u4e86\u5b9e\u73b0\u7c7b\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u8fd9\u6837\u5b50\u6765\u8c03\u7528\u83b7\u5f97user\u8bb0\u5f55\npublic class JdbcExecution {\n    \/\/ \u67e5\u8be2id\u4e3a2\u7684\u7528\u6237\n    public static void main(String[] args) throws Exception{\n        UserDao userDao = new UserDaoImpl();\n        User user = userDao.selectByPrimaryKey(2);\n        System.out.println(\"user = \" + user);\n    }\n}\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a5\u7740\u95ee\u9898\u5c31\u662f\u6211\u4eec\u5728\u5b9e\u73b0\u7c7b\u4e2d\u7684\u4ee3\u7801\uff0c\u4f7f\u7528JDBC\u7684\u65b9\u5f0f\u6765\u5b8c\u6210\uff0c\u6211\u4eec\u4e5f\u628a\u8fc7\u7a0b\u4e2d\u7684\u4e00\u4e9b\u64cd\u4f5c\u505a\u4e00\u4e9b\u5206\u6790\uff0c\u53ef\u4ee5\u53c2\u8003\u6ce8\u91ca<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic class UserDaoImpl implements UserDao{\n    @Override\n    public User selectByPrimaryKey(Integer id) throws Exception {\n        \/\/ 1.\u83b7\u5f97\u8fde\u63a5\uff0c\u5982\u679c\u540e\u9762\u9700\u8981\u63d0\u4ea4\u4e8b\u52a1\uff0c\u5219\u6267\u884cconnection.commit\n        Connection connection = JdbcUtil.getConnection();\n        \/\/ 2.\u9884\u7f16\u8bd1\uff0c\u9884\u7f16\u8bd1\u8fc7\u7a0b\u4e2d\u4f20\u5165\u4e86SQL\u8bed\u53e5\n        PreparedStatement preparedStatement = connection.prepareStatement(\"select id, username, password, age, birthday, create_date, mobile from cskaoyan_user where id = ?\");\n        \/\/ 3.\u63d0\u4f9b\u5360\u4f4d\u7b26\u4f4d\u7f6e\u7684\u503c\n        preparedStatement.setInt(1,id);\n        \/\/ 4.\u6267\u884c\u67e5\u8be2\u83b7\u5f97\u7ed3\u679c\u96c6\n        ResultSet resultSet = preparedStatement.executeQuery();\n        \/\/ 5.\u521b\u5efa\u4e00\u4e2a\u63a5\u6536\u7ed3\u679c\u96c6\u4e2d\u7684\u503c\u7684\u5b9e\u4f8b\n        User user = new User();\n        while (resultSet.next()) {\n            \/\/ 6.\u83b7\u5f97\u7ed3\u679c\u96c6\u4e2d\u7684username\u5217(column)\u4e2d\u7684\u503c\n            String username = resultSet.getString(\"username\");\n            \/\/   \u83b7\u5f97\u7ed3\u679c\u96c6\u4e2d\u7684password\u5217(column)\u4e2d\u7684\u503c\n            String password = resultSet.getString(\"password\");\n            int age = resultSet.getInt(\"age\");\n            Date birthday = resultSet.getDate(\"birthday\");\n            Date createDate = resultSet.getDate(\"create_date\");\n            String mobile = resultSet.getString(\"mobile\");\n            user.setId(id);\n            \/\/ 7.\u901a\u8fc7set\u65b9\u6cd5\u5c01\u88c5\u7ed9user\u5b9e\u4f8b\u4e2d\u7684username\u8fd9\u4e2a\u6210\u5458\u53d8\u91cf(property)\n            user.setUsername(username);\n            \/\/   \u901a\u8fc7set\u65b9\u6cd5\u5c01\u88c5\u7ed9user\u5b9e\u4f8b\u4e2d\u7684password\u8fd9\u4e2a\u6210\u5458\u53d8\u91cf(property)\n            user.setPassword(password);\n            user.setAge(age);\n            user.setBirthday(birthday);\n            user.setCreateDate(createDate);\n            user.setMobile(mobile);\n        }\n        return user;\n    }\n}\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u8fc7\u7a0b\u6bd4\u8f83\u7e41\u7410\uff0c\u5e76\u4e14\u5b58\u5728\u7740\u5f88\u591a\u5b9a\u5236\u5316\u7684\u5185\u5bb9\u548c\u8026\u5408<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SQL\u8bed\u53e5\u548c\u4ee3\u7801\u76f4\u63a5\u8026\u5408\u5728\u4e00\u8d77<\/li>\n\n\n\n<li>\u8bbe\u7f6e\u53c2\u6570\u8fc7\u7a0b\u6bd4\u8f83\u7e41\u7410\uff0c\u5bf9\u5e94\u7684\u5173\u7cfb\u53ea\u6709\u5360\u4f4d\u7b26\u7684\u5e8f\u53f7\uff0c\u5982\u679c\u6709\u591a\u4e2a\u5360\u4f4d\u7b26\uff1f\u7684\u8bdd\uff0c\u5bb9\u6613\u51fa\u9519<\/li>\n\n\n\n<li>\u67e5\u8be2\u7ed3\u679c\u96c6\u7684\u4f7f\u7528\u6bd4\u8f83\u7e41\u7410<\/li>\n\n\n\n<li>\u624b\u52a8\u8c03\u7528\u6784\u9020\u65b9\u6cd5\u6765\u83b7\u5f97\u5b9e\u4f8b<\/li>\n\n\n\n<li>\u8981\u5173\u6ce8\u5217\u540d\u4ece\u7ed3\u679c\u96c6\u4e2d\u53d6\u51fa\u6570\u636e<\/li>\n\n\n\n<li>\u8981\u5173\u6ce8\u5217\u7684\u7c7b\u578b\u624b\u52a8\u8c03\u7528\u4e0d\u540c\u7684\u65b9\u6cd5\uff0c\u6bd4\u5982getInt\u3001getString\u3001getDate<\/li>\n\n\n\n<li>\u53d6\u51fa\u7684\u503c\u9700\u8981\u4f7f\u7528set\u65b9\u6cd5\u6765\u5c01\u88c5<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">MyBatis<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5bfc\u5305<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;!--mybatis--&gt;\n&lt;dependency&gt;\n       &lt;groupId&gt;org.mybatis&lt;\/groupId&gt;\n       &lt;artifactId&gt;mybatis&lt;\/artifactId&gt;\n       &lt;version&gt;3.5.9&lt;\/version&gt;\n&lt;\/dependency&gt;\n&lt;!-- \u6570\u636e\u5e93\u9a71\u52a8\u5305 --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;mysql&lt;\/groupId&gt;\n    &lt;artifactId&gt;mysql-connector-java&lt;\/artifactId&gt;\n       &lt;version&gt;8.0.20&lt;\/version&gt;\n   &lt;\/dependency&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u914d\u7f6e1: \u914d\u7f6e\u4e00\u4e2aMybatis\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6\uff0c\u7528\u6765\u83b7\u53d6SqlSessionFactory<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ SqlSessionFactory\uff1a\u6bcf\u4e00\u4e2aMybatis\u5e94\u7528\u90fd\u662f\u4ee5SqlSessionFactory\u7684\u5b9e\u4f8b\u5bf9\u8c61\u4e3a\u6838\u5fc3\u7684\u3002\u4f7f\u7528Mybatis\u5fc5\u987b\u4ee5SqlSessionFactory\u7684\u5b9e\u4f8b\u4e3a\u6838\u5fc3\uff0c\u518d\u4ee5SqlSessionFactory\u7684\u5b9e\u4f8b\u751f\u4ea7SqlSession\u5b9e\u4f8b\u5bf9\u8c61\u7684\u3002\n\/\/ SqlSession\uff1a\u8fd9\u4e2a\u5176\u5b9e\u8868\u793a\u548c\u6570\u636e\u5e93\u4e4b\u95f4\u7684\u4e00\u4e2a\u8fde\u63a5\uff0c\u91cc\u9762\u5c01\u88c5\u4e86 Connection\u5bf9\u8c61\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;!DOCTYPE configuration\n      PUBLIC \"-\/\/mybatis.org\/\/DTD Config 3.0\/\/EN\"\n      \"https:\/\/mybatis.org\/dtd\/mybatis-3-config.dtd\"&gt;\n &lt;configuration&gt;\n      &lt;environments default=\"development\"&gt;\n       &lt;environment id=\"development\"&gt;\n         &lt;transactionManager type=\"JDBC\"\/&gt;\n          &lt;dataSource type=\"POOLED\"&gt;\n           &lt;property name=\"driver\" value=\"${driver}\"\/&gt;\n            &lt;property name=\"url\" value=\"${url}\"\/&gt;\n            &lt;property name=\"username\" value=\"${username}\"\/&gt;\n            &lt;property name=\"password\" value=\"${password}\"\/&gt;\n          &lt;\/dataSource&gt;\n        &lt;\/environment&gt;\n      &lt;\/environments&gt;\n      &lt;mappers&gt;\n        &lt;mapper resource=\"org\/mybatis\/example\/BlogMapper.xml\"\/&gt;\n      &lt;\/mappers&gt;\n    &lt;\/configuration&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u914d\u7f6e2: \u914d\u7f6e\u4e00\u4e2a\u4e13\u95e8\u7528\u6765\u5b58\u653eSQL\u8bed\u53e5\u7684\u914d\u7f6e\u6587\u4ef6\uff0cMapper.xml<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u5728Mybatis\u4e2d\uff0c\u8fd9\u6837\u7684\u6587\u4ef6\u53ef\u4ee5\u6709\u591a\u4e2a\n\/\/ \u8fd9\u4e9b\u6587\u4ef6\uff0c\u90fd\u5fc5\u987b\u5728Mybatis\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u58f0\u660e\u8fdb\u6765\u3001\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;!DOCTYPE mapper\n       PUBLIC \"-\/\/mybatis.org\/\/DTD Mapper 3.0\/\/EN\"\n       \"http:\/\/mybatis.org\/dtd\/mybatis-3-mapper.dtd\"&gt;\n&lt;!-- namespace: \u547d\u540d\u7a7a\u95f4\uff0c\u6574\u4e2a\u9879\u76ee\u4e2d\u5fc5\u987b\u552f\u4e00\uff0c\u6682\u65f6\u53ef\u4ee5\u4efb\u610f\u53d6\u540d(\u540e\u9762\u518d\u8fdb\u884c\u6807\u51c6\u5316) --&gt;\n&lt;mapper namespace=\"usersql\"&gt;\n   &lt;!-- \u6bcf\u4e2a\u6807\u7b7e\u90fd\u9700\u8981\u4e00\u4e2a\u552f\u4e00\u7684id\u5c5e\u6027: \n \u6bcf\u4e00\u4e2a\u6807\u7b7e\u7684id\u4e0d\u80fd\u91cd\u590d(\u672cMapper\u6587\u4ef6\u4e2d), \u7528\u6765\u6807\u8bc6\u4e00\u6761SQL  --&gt;\n       &lt;!-- \u5728\u8fd9\u4e2aMapper\u6587\u4ef6\u4e2d, \u600e\u4e48\u552f\u4e00\u8868\u793aSQL\u8bed\u53e5?\n       namespace.id (\u547d\u540d\u7a7a\u95f4.\u6807\u7b7e\u7684id ) \u662f\u8fd9\u4e2aSQL\u8bed\u53e5\u7684\u5750\u6807  --&gt;\n   &lt;!-- &lt;insert&gt; \u63d2\u5165\u6807\u7b7e --&gt;\n       &lt;!-- &lt;delete&gt; \u5220\u9664\u6807\u7b7e --&gt;\n        &lt;!-- &lt;update&gt; \u4fee\u6539\u6807\u7b7e --&gt;\n       &lt;!-- &lt;select&gt; \u67e5\u8be2\u6807\u7b7e --&gt;\n   \n       &lt;!-- parameterType\uff1a\u53c2\u6570\u7684\u7c7b\u578b(\u53ef\u4ee5\u7701\u7565,\u6807\u51c6\u8bed\u6cd5\u8981\u6307\u660e ) --&gt;\n       &lt;!-- resultType\uff1a\u8fd4\u56de\u7684\u7ed3\u679c\u96c6\u7684\u7c7b\u578b(\u4e0d\u80fd\u7701\u7565) --&gt;\n   &lt;select id=\"selectByPrimaryKey\" resultType=\"com.cskaoyan.model.User\"&gt;\n           select id, username, password, age, birthday, create_date as createDate, mobile from cskaoyan_user where id = #{id}\n       &lt;\/select&gt;\n    \n    &lt;\/mapper&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4f7f\u7528<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/\u4f7f\u7528\u7684\u4ee3\u7801\u548c\u524d\u9762\u5b8c\u5168\u4e00\u6837\npublic class MyBatisExecution {\n\n   \/\/ \u67e5\u8be2id\u4e3a2\u7684\u7528\u6237\n   public static void main(String[] args) throws Exception{\n       UserDao userDao = new UserDaoImpl();\n       User user = userDao.selectByPrimaryKey(2);\n       System.out.println(\"user = \" + user);\n   }\n}\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4f46\u662fUserDaoImpl\u4e2d\u7684\u5b9e\u73b0\u5219\u5b8c\u5168\u4e0d\u4e00\u6837\u4e86<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic class UserDaoImpl implements UserDao{\n   @Override\n   public User selectByPrimaryKey(Integer id) {\n       \/\/ 1.\u83b7\u5f97\u5168\u5c40\u5171\u4eab\u7684SqlSessionFactory(\u7ebf\u7a0b\u5b89\u5168)\n       SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();\n       \/\/ 2.\u5f00\u542fSqlSession(\u7ebf\u7a0b\u4e0d\u5b89\u5168)\uff0c\u5176\u4e2d\u5c01\u88c5\u4e86Connection\n       SqlSession sqlSession = sqlSessionFactory.openSession();\n       \/\/ 3.(1)\u4f20\u5165Sql\u7684\u5750\u6807;(2)\u4f20\u5165\u53c2\u6570;(3)\u67e5\u8be2\u7ed3\u679c\u96c6\u7684\u5c01\u88c5\n       User user = sqlSession.selectOne(\"usersql.selectByPrimaryKey\", id);\n       return user;\n   }\n}\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5176\u4e2dMyBatisUtil\u662f\u63d0\u4f9b\u5168\u5c40\u5171\u4eab\u7684SqlSessionFactory\u5b9e\u4f8b\u7684<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic class MyBatisUtil {\n     \/\/ \u7ebf\u7a0b\u5b89\u5168\u7684\u503c\uff0c\u53ef\u4ee5\u5168\u5c40\u5171\u4eab\n     private static SqlSessionFactory sqlSessionFactory;\n     static {\n        try {\n          sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(\"mybatis.xml\"));\n        } catch (IOException e) {\n          e.printStackTrace();\n        }\n     }\n\n     public static SqlSessionFactory getSqlSessionFactory() {\n        return sqlSessionFactory;\n     }\n}\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u5206\u6790<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4e0a\u9762\u7684\u6848\u4f8b\u4e2dMyBatis\u9ed8\u9ed8\u7684\u66ff\u6211\u4eec\u505a\u4e86\u4ec0\u4e48\u4e8b\u60c5<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>connection.preparedStatement\u9700\u8981\u4f20\u5165\u7684Sql\u8bed\u53e5\uff0c\u6211\u4eec\u4ec5\u4ec5\u63d0\u4f9b\u4e86\u5750\u6807\uff08\u6620\u5c04\u6587\u4ef6\u7684\u547d\u540d\u7a7a\u95f4+id\uff09<\/li>\n\n\n\n<li>\u53c2\u6570\u548c\u5360\u4f4d\u7b26\u7684\u5bf9\u5e94\u5173\u7cfb\uff0c\u81ea\u52a8\u5bf9\u5e94\u8d77\u6765<\/li>\n\n\n\n<li>resultSet\u83b7\u5f97\u7ed3\u679c\u96c6\uff0c\u5e76\u4e14\u5c01\u88c5\u4e3aUser\u5b9e\u4f8b\u7684\u8fc7\u7a0b\u5b8c\u5168\u662fMyBatis\u81ea\u52a8\u5b8c\u6210\u7684<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u4e0a\u9762\u7684\u8fc7\u7a0b\u5176\u5b9e\u662f\u5b9e\u9645\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u975e\u5e38\u7e41\u7410\uff0c\u800c\u53c8\u5f88\u901a\u7528\u7684\u4e8b\u60c5<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u642d\u5efa\u5f00\u53d1\u73af\u5883(MyBatis)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Maven\u9879\u76ee<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u6b65: \u5bfc\u5305\u5728pom.xml<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;dependencies&gt;\n &lt;!--mybatis--&gt;\n &lt;dependency&gt;\n       &lt;groupId&gt;org.mybatis&lt;\/groupId&gt;\n       &lt;artifactId&gt;mybatis&lt;\/artifactId&gt;\n       &lt;version&gt;3.5.9&lt;\/version&gt;\n &lt;\/dependency&gt;\n\n &lt;!-- \u6570\u636e\u5e93\u9a71\u52a8\u5305 --&gt;\n &lt;dependency&gt;\n       &lt;groupId&gt;mysql&lt;\/groupId&gt;\n       &lt;artifactId&gt;mysql-connector-java&lt;\/artifactId&gt;\n       &lt;version&gt;8.0.20&lt;\/version&gt;\n &lt;\/dependency&gt;\n\n&lt;!-- \u6d4b\u8bd5\u5305 --&gt;\n &lt;dependency&gt;\n       &lt;groupId&gt;junit&lt;\/groupId&gt;\n       &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n       &lt;version&gt;4.12&lt;\/version&gt;\n &lt;\/dependency&gt;\n&lt;\/dependencies&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e8c\u6b65: \u914d\u7f6eMyBatis\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6(<code>mybatis-config.xml<\/code>)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;!DOCTYPE configuration\nPUBLIC \"-\/\/mybatis.org\/\/DTD Config 3.0\/\/EN\"\n\"https:\/\/mybatis.org\/dtd\/mybatis-3-config.dtd\"&gt;\n\n&lt;configuration&gt;\n\n&lt;!-- \u73af\u5883\u7684\u914d\u7f6e\uff0c\u5176\u5b9e\u5c31\u662f\u53bb\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5--&gt;\n&lt;environments default=\"development\"&gt;\n&lt;environment id=\"development\"&gt;\n &lt;transactionManager type=\"JDBC\"\/&gt;\n &lt;dataSource type=\"POOLED\"&gt;\n     &lt;property name=\"driver\" value=\"com.mysql.jdbc.Driver\"\/&gt;\n     &lt;property name=\"url\" value=\"jdbc:mysql:\/\/localhost:3306\/clazz61?characterEncoding=utf8&amp;amp;serverTimezone=GMT%2B8\"\/&gt;\n     &lt;property name=\"username\" value=\"root\"\/&gt;\n     &lt;property name=\"password\" value=\"123456\"\/&gt;\n &lt;\/dataSource&gt;\n&lt;\/environment&gt;\n&lt;\/environments&gt;\n\n&lt;!-- \u53bb\u67e5\u627e\u7684Mapper\u6587\u4ef6 --&gt;\n&lt;mappers&gt;\n&lt;mapper resource=\"com\/snow\/www\/mapper\/AccountMapper.xml\"\/&gt;\n&lt;\/mappers&gt;\n\n&lt;\/configuration&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\u6b65: \u521b\u5efa\u4e00\u4e2aJava\u63a5\u53e3Mapper\u63a5\u53e3\u6587\u4ef6 (\u6ce8\u610f\u8def\u5f84)<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u56db\u6b65: \u521b\u5efa\u4e00\u4e2a\u4e0eJava\u63a5\u53e3\u6587\u4ef6\u5bf9\u5e94\u7684Mapper.xml\u914d\u7f6e\u6587\u4ef6<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u5728\u7b2c\u4e09\/\u56db\u6b65\u9aa4\u4e2d: \n1, \u6ce8\u610f\u8def\u5f84\u4fdd\u6301, \u6700\u7ec8\u7ecf\u8fc7\u7f16\u8bd1\u548c\u5bf9\u5e94\u63a5\u53e3\u6587\u4ef6\u7f16\u8bd1\u5230\u540c\u4e00\u5305\u4e0b \uff08\u6620\u5c04\u6587\u4ef6\u5728src\\main\\resources\u548c\u63a5\u53e3\u5728src\\main\\java\u4e2d\u7684\u5305\u76ee\u5f55\u8981\u4e00\u81f4\uff09\n2, \u6587\u4ef6\u7684\u540d\u5b57\u548c\u63a5\u53e3\u7684\u6587\u4ef6\u7684\u540d\u5b57\u4fdd\u6301\u4e00\u81f4\n3, xml\u4e2d\u7684namespace(\u547d\u540d\u7a7a\u95f4)\u7684\u503c\u8981\u548cJava\u63a5\u53e3\u7684\u5168\u9650\u5b9a\u540d\u79f0\u4fdd\u6301\u4e00\u81f4\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e94\u6b65: \u628amapper.xml\u914d\u7f6e\u6587\u4ef6\u5f15\u5165\u5230\u4e3b\u914d\u7f6e\u6587\u4ef6\u4e2d(<code>mybatis-config.xml<\/code>)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;!-- \u53bb\u67e5\u627e\u7684Mapper\u6587\u4ef6 --&gt;\n&lt;mappers&gt;\n&lt;mapper resource=\"com\/snow\/www\/mapper\/AccountMapper.xml\"\/&gt;\n&lt;\/mappers&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u516d\u6b65: \u52a0\u8f7d\u4e3b\u914d\u7f6e\u6587\u4ef6(<code>mybatis-config.xml<\/code>)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ 1. \u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\nInputStream inputStream = null;\ntry {\ninputStream = Resources.getResourceAsStream(\"mybatis-config.xml\");\n} catch (IOException e) {\ne.printStackTrace();\n}\n\n\/\/ 2. \u83b7\u53d6SqlSessionFactory\nSqlSessionFactoryBuilder sqlSessionFactoryBuilder = \n\t\t\t\tnew SqlSessionFactoryBuilder();\nsqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e03\u6b65: \u5728\u5bf9\u5e94\u7684Mapper\u6587\u4ef6\u548c\u5bf9\u5e94\u7684Java\u63a5\u53e3\u4e2d, \u58f0\u660eSQL\u548c\u58f0\u660e\u65b9\u6cd5<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u6ce8\u610f:\n1, \u65b9\u6cd5\u540d\u548c\u5bf9\u5e94xml\u7684SQL\u7684id\u4fdd\u6301\u4e00\u81f4\n2, \u53c2\u6570\u548c\u8fd4\u56de\u503c\u8bbe\u7f6e\u6b63\u786e\n3, \u6ce8\u610fSQL\u8fd4\u56de\u503c\u7c7b\u578bparameterType(\u7ed3\u679c\u96c6\u7684\u89e3\u6790\u662fMybatis\u81ea\u52a8\u5b8c\u6210\u7684\uff0c\u4e0d\u7528\u6211\u4eec\u81ea\u5df1\u89e3\u6790)\n4, \u6ce8\u610fSQL\u8bed\u53e5\u4e66\u5199\u6b63\u786e\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u6dfb\u52a0\npublic int insertAccount(Account account);\n\/\/ \u67e5\u627e\npublic Account selectAccountById(Integer id);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;insert id=\"insertAccount\" &gt;\ninsert into account set id=#{id}, name=#{name}, money=#{money}\n&lt;\/insert&gt;\n&lt;select id=\"selectAccountById\"  parameterType=\"java.lang.Integer\" resultType=\"com.snow.www.bean.Account\"&gt;\nselect * from account where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u516b\u6b65: \u83b7\u53d6SqlSession \u548c \u4ee3\u7406\u7684Mapper\u5bf9\u8c61<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ 1. \u83b7\u53d6SqlSession\nsqlSession = sqlSessionFactory.openSession(true);\n\n\/\/ 2. \u83b7\u53d6\u63a5\u53e3\u7684\u4ee3\u7406\u5bf9\u8c61\nstudentMapper = sqlSession.getMapper(AccountMapper.class);\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e5d\u6b65: \u901a\u8fc7\u4ee3\u7406\u5bf9\u8c61\u8c03\u7528\u65b9\u6cd5\u6267\u884cSQL\u8bed\u53e5<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nAccount account = new Account();\naccount.setId(10);\naccount.setName(\"snow\");\naccount.setMoney(200);\nint rows  = accountMapper.insertAccount(account);\n```<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u52a8\u6001\u4ee3\u7406(Dynamic Proxy)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u52a8\u6001\u4ee3\u7406<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4e00\u4e9b\u95ee\u9898<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u76ee\u524dMybatis\u4f7f\u7528\u8d77\u6765\u8fd8\u4e0d\u591f\u7075\u6d3b\uff0c\u4e0d\u591f\u7b80\u5355\u3002\n\/\/ \u867d\u7136\u89e3\u51b3\u4e86SQL\u8bed\u53e5\u786c\u7f16\u7801\u7684\u95ee\u9898\uff0c\u4f46\u662f\u53c8\u51fa\u73b0\u4e86\u65b0\u7684\u95ee\u9898\nSQL\u8bed\u53e5\u7684\u5750\u6807\u5b58\u5728\u786c\u7f16\u7801\nsqlSession\u8c03\u7528\u7684\u65b9\u6cd5\u9700\u8981\u6211\u4eec\u81ea\u5df1\u53bb\u6307\u5b9a\n\/\/\u4e5f\u5c31\u662fUserDaoImpl\u4e2d\u7684\u5185\u5bb9\u8fd8\u4e0d\u591f\u901a\u7528\uff0c\u6211\u4eec\u60f3\u8981\u8fdb\u4e00\u6b65\u5e72\u6389\u5b83\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u800cMybatis\u7684\u52a8\u6001\u4ee3\u7406\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u53bb\u751f\u6210\u63a5\u53e3\u7684\u4ee3\u7406\u5bf9\u8c61\u3002\u6211\u4eec\u53ef\u4ee5\u81ea\u5df1\u4e0d\u5b9e\u73b0\u63a5\u53e3\u3002<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u4e0d\u9700\u8981\u5b9e\u73b0\u63a5\u53e3\uff0c\u90a3\u4e48\u5c31\u9700\u8981\u9075\u5b88Mybatis\u4f7f\u7528\u52a8\u6001\u4ee3\u7406\u7684\u4e00\u4e9b\u89c4\u5219\n1, \u63a5\u53e3\u7684\u5168\u9650\u5b9a\u540d\u79f0 \u548c mapper.xml\u4e2d\u7684namespace\u7684\u503c\u4fdd\u6301\u4e00\u81f4\n2, \u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5\u548c xml\u6587\u4ef6\u4e2d\u7684 &lt;select&gt; &lt;insert&gt; &lt;update&gt; &lt;delete&gt; \u6807\u7b7e \u4e00\u4e00\u5bf9\u5e94\uff0c\u5e76\u4e14\u65b9\u6cd5\u540d\u8981\u548c\u6807\u7b7e\u7684id\u503c\u4fdd\u6301\u4e00\u81f4\n3, \u65b9\u6cd5\u7684\u8fd4\u56de\u503c\u7c7b\u578b\u548c\u6807\u7b7e\u4e2d\u7684resultType\u4fdd\u6301\u4e00\u81f4(\u6ce8\u610f:\u6dfb\u52a0\/\u5220\u9664\/\u4fee\u6539\u4e0d\u9700\u8981\u8fd4\u56de\u503c\u7c7b\u578b)\n4, \u53c2\u6570\u4fdd\u6301\u4e00\u81f4(\u6682\u65f6\u53ef\u4ee5\u4e0d\u5199)\n  \n\/\/ \u5efa\u8bae\u8981\u9075\u5b88\u7684\u89c4\u5219\uff1a\u5e0c\u671b\n1, \u6587\u4ef6\u7684\u540d\u5b57 UserMapper.xml  | UserMapper.java \u5efa\u8bae\u4fdd\u6301\u4e00\u81f4\n2, UserMapper.xml \u548cUserMapper.java \u5728\u7f16\u8bd1\u4e4b\u540e\u7684\u4f4d\u7f6e\u5e94\u8be5\u8981\u5728\u540c\u4e00\u4e2a\u8def\u5f84\u4e0b\n```<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-100.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"417\" height=\"459\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-100.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-600\"  sizes=\"auto, (max-width: 417px) 100vw, 417px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u7f16\u8bd1\u540e\u5728\u540c\u4e00\u8def\u5f84<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-101.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"392\" height=\"170\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-101.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-601\"  sizes=\"auto, (max-width: 392px) 100vw, 392px\" \/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5982\u4f55\u4f7f\u7528\u52a8\u6001\u4ee3\u7406\u5462\uff1f<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic class MyBatisExecution {\n\n    \/\/ \u67e5\u8be2id\u4e3a2\u7684\u7528\u6237\n    public static void main(String[] args) throws Exception{\n        \/\/UserDao userDao = new UserDaoImpl();\n        \/\/ 1.\u83b7\u53d6SqlSession\n        SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();\n        \/\/ 2.\u6839\u636eSqlSession\u83b7\u5f97Mapper\u4ee3\u7406\u5bf9\u8c61\n        UserMapper userDao = sqlSession.getMapper(UserMapper.class);\n        \/\/ 3.\u4ee3\u7406\u5bf9\u8c61\u6267\u884c\u65b9\u6cd5\n        User user = userDao.selectByPrimaryKey(2);\n        System.out.println(\"user = \" + user);\n    }\n}\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u589e\u5220\u6539\u67e5\u793a\u4f8b<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nAccount account = new Account();\naccount.setId(10);\naccount.setName(\"\u674e\u767d\");\naccount.setMoney(200);\nint rows  = accountMapper.insertAccount(account);\n\n\/\/ sqlSession.commit();\nConnection connection = sqlSession.getConnection();\nconnection.commit();\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u6dfb\u52a0\npublic int insertAccount(Account account);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;!--public int insertAccount(Account account);--&gt;\n&lt;insert id=\"insertAccount\" &gt;\n       insert into account set id=#{id}, name=#{name}, money=#{money}\n&lt;\/insert&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5220\u9664<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nint rows  = accountMapper.deleteAccountById(10);\n\/\/ sqlSession.commit();\nConnection connection = sqlSession.getConnection();\nconnection.commit();\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u5220\u9664\npublic int deleteAccountById(Integer id); \n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;delete id=\"deleteAccountById\"&gt;\n       delete from account where id=#{id}\n&lt;\/delete&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4fee\u6539<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nAccount account = new Account();\naccount.setId(10);\naccount.setName(\"zs\");\naccount.setMoney(2000);\nint rows  = accountMapper.updateAccountById(account);\n\n\/\/ sqlSession.commit();\nConnection connection = sqlSession.getConnection();\nconnection.commit();\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u4fee\u6539\npublic int updateAccountById(Account account);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;update id=\"updateAccountById\"&gt;\n       update account set name=#{name}, money=#{money} where id =#{id}\n&lt;\/update&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u67e5\u627e<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nAccount account = accountMapper.selectAccountById(10);\nSystem.out.println(account);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u67e5\u627e\npublic Account selectAccountById(Integer id);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectAccountById\"  parameterType=\"java.lang.Integer\" resultType=\"com.snow.www.bean.Account\"&gt;\n   select * from account where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e8b\u52a1<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5728\u4f7f\u7528Mybatis\u7684\u65f6\u5019, \u81ea\u5e26\u4e8b\u52a1\uff0c\u800c\u4e14\u4e8b\u52a1\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u4e0d\u4f1a\u81ea\u52a8\u63d0\u4ea4\u7684<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u89e3\u51b3\u529e\u6cd5\u4e00:  \u6267\u884c\u5b8cSQL\u8bed\u53e5\u4e4b\u540e, \u4f7f\u7528sqlSession\u63d0\u4ea4\u4e8b\u52a1\nsqlSession.commit();\n\/\/ \u89e3\u51b3\u529e\u6cd5\u4e8c:  \u6267\u884c\u5b8cSQL\u8bed\u53e5\u4e4b\u540e, \u4f7f\u7528sqlSession\u5185\u90e8\u5c01\u88c5\u7684Connection \u63d0\u4ea4\u4e8b\u52a1\n   Connection conn  = sqlSession.getConnection();\n   conn.commit();\n\/\/ \u89e3\u51b3\u529e\u6cd5\u4e09:(\u81ea\u52a8\u63d0\u4ea4) \u5728\u83b7\u5f97SqlSession\u7684\u65f6\u5019, \u7ed9sqlSessionFactory.openSession\u8bbe\u7f6e\u4e3a\u771f\n   \/\/ \u83b7\u53d6\u5230\u7684SqlSession\uff0c\u91cc\u9762\u7684connection\u4e0d\u4f1a\u81ea\u52a8\u63d0\u4ea4\n   SqlSession session = sqlSessionFactory.openSession();\n   \/\/ \u83b7\u53d6\u81ea\u52a8\u63d0\u4ea4\u7684SqlSession\n   SqlSession session = sqlSessionFactory.openSession(true);  \n```<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u914d\u7f6e(MyBatis)<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4e3b\u8981\u662f\u4ecb\u7ecdMybatis\u7684\u6838\u5fc3\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-106-1024x325.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"325\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-106-1024x325.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-606\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u8fd9\u4e9b\u6807\u7b7e\u662f\u6709\u5e8f\u7684<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">properties<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">properties\u8868\u793a\u53ef\u4ee5\u5916\u90e8\u914d\u7f6e\u7684\u5c5e\u6027\uff0c\u5e76\u53ef\u4ee5\u8fdb\u884c\u52a8\u6001\u66ff\u6362\u3002(\u4f5c\u4e3a\u5178\u578b\u7684\u662fJDBC\u914d\u7f6e)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\ndriver=com.mysql.jdbc.Driver\nurl=jdbc:mysql:\/\/localhost:3306\/db47?useSSL=false&amp;userUnicode=true&amp;characterEncoding=utf8\nusername=root\npassword=123456\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;configuration&gt;\n   &lt;!-- \u5f15\u5165\u5916\u90e8\u914d\u7f6e\u6587\u4ef6 --&gt;\n   &lt;properties resource=\"jdbc.properties\" &gt;&lt;\/properties&gt;\n&lt;\/configuration&gt;\n```<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-114-1024x637.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"637\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-114-1024x637.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-614\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">settings<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">settings\u662fMyBatis\u7684\u884c\u4e3a\u914d\u7f6e(\u7c7b\u4f3c\u4e8eidea\u548csettings\u7684\u5173\u7cfb)<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">eg: \u65e5\u5fd7\u914d\u7f6e<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;configuration&gt;\n   &lt;settings&gt;\n       &lt;!--  \u6dfb\u52a0\u65e5\u5fd7\u7684\u914d\u7f6e --&gt;\n       &lt;setting name=\"logImpl\" value=\"STDOUT_LOGGING\"\/&gt;\n&lt;\/settings&gt;\n&lt;\/configuration&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u5b8c\u6574\u7684settings\u914d\u7f6e (\u6682\u65f6\u6ca1\u7528)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;settings&gt;\n &lt;setting name=\"cacheEnabled\" value=\"true\"\/&gt;\n &lt;setting name=\"lazyLoadingEnabled\" value=\"true\"\/&gt;\n &lt;setting name=\"aggressiveLazyLoading\" value=\"true\"\/&gt;\n &lt;setting name=\"multipleResultSetsEnabled\" value=\"true\"\/&gt;\n &lt;setting name=\"useColumnLabel\" value=\"true\"\/&gt;\n &lt;setting name=\"useGeneratedKeys\" value=\"false\"\/&gt;\n &lt;setting name=\"autoMappingBehavior\" value=\"PARTIAL\"\/&gt;\n &lt;setting name=\"autoMappingUnknownColumnBehavior\" value=\"WARNING\"\/&gt;\n &lt;setting name=\"defaultExecutorType\" value=\"SIMPLE\"\/&gt;\n &lt;setting name=\"defaultStatementTimeout\" value=\"25\"\/&gt;\n &lt;setting name=\"defaultFetchSize\" value=\"100\"\/&gt;\n &lt;setting name=\"safeRowBoundsEnabled\" value=\"false\"\/&gt;\n &lt;setting name=\"safeResultHandlerEnabled\" value=\"true\"\/&gt;\n &lt;setting name=\"mapUnderscoreToCamelCase\" value=\"false\"\/&gt;\n &lt;setting name=\"localCacheScope\" value=\"SESSION\"\/&gt;\n &lt;setting name=\"jdbcTypeForNull\" value=\"OTHER\"\/&gt;\n &lt;setting name=\"lazyLoadTriggerMethods\" value=\"equals,clone,hashCode,toString\"\/&gt;\n &lt;setting name=\"defaultScriptingLanguage\" value=\"org.apache.ibatis.scripting.xmltags.XMLLanguageDriver\"\/&gt;\n &lt;setting name=\"defaultEnumTypeHandler\" value=\"org.apache.ibatis.type.EnumTypeHandler\"\/&gt;\n &lt;setting name=\"callSettersOnNulls\" value=\"false\"\/&gt;\n &lt;setting name=\"returnInstanceForEmptyRow\" value=\"false\"\/&gt;\n &lt;setting name=\"logPrefix\" value=\"exampleLogPreFix_\"\/&gt;\n &lt;setting name=\"logImpl\" value=\"SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING\"\/&gt;\n &lt;setting name=\"proxyFactory\" value=\"CGLIB | JAVASSIST\"\/&gt;\n &lt;setting name=\"vfsImpl\" value=\"org.mybatis.example.YourselfVfsImpl\"\/&gt;\n &lt;setting name=\"useActualParamName\" value=\"true\"\/&gt;\n &lt;setting name=\"configurationFactory\" value=\"org.mybatis.example.ConfigurationFactory\"\/&gt;\n&lt;\/settings&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">typeAliases<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">typeAlies\u7c7b\u578b\u522b\u540d\u3002(\u4e5f\u5c31\u662f\u6211\u4eec\u53ef\u4ee5\u5bf9 \u7c7b \u8d77\u522b\u540d\uff0c\u7b80\u5316\u64cd\u4f5c) (\u6682\u65f6\u4e0d\u5efa\u8bae\u4f7f\u7528)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;configuration&gt;\n\n &lt;!-- \u7c7b\u578b\u522b\u540d --&gt;\n &lt;typeAliases&gt;\n     &lt;!-- alias\u522b\u540d type\u5168\u9650\u5b9a\u540d --&gt;\n     &lt;typeAlias alias=\"account\" type=\"com.snow.www.bean.Account\"\/&gt;\n     &lt;typeAlias alias=\"user\" type=\"com.snow.www.bean.User\"\/&gt;\n     &lt;package name=\"com.snow.www.bean\"\/&gt;\n &lt;\/typeAliases&gt;\n&lt;\/configuration&gt;\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectAccountById\"  resultType=\"account\"&gt;\n select * from account where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-102-1024x375.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"375\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-102-1024x375.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-602\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6ce8\u610f: Mybatis\u5bf9\u4e8e\u4e00\u4e9b\u57fa\u672c\u7c7b\u578b\u548c\u5305\u88c5\u7c7b\u578b\uff0c\u4ee5\u53ca\u96c6\u5408\u7c7b\u578b\uff0c<strong>\u6709\u5185\u7f6e\u7684\u522b\u540d\u3002<\/strong><\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u503c\u5f97\u6ce8\u610f\u7684\u662f\u4e0b\u9762\u662f\u4e00\u4e9b\u4e3a\u5e38\u89c1\u7684 Java \u7c7b\u578b\u5185\u5efa\u7684\u7c7b\u578b\u522b\u540d\u3002\u5b83\u4eec\u90fd\u662f\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u7684\uff0c\u800c\u4e14\u4e3a\u4e86\u5e94\u5bf9\u539f\u59cb\u7c7b\u578b\u7684\u547d\u540d\u91cd\u590d\uff0c\u91c7\u53d6\u4e86\u7279\u6b8a\u7684\u547d\u540d\u98ce\u683c\u3002\n\/\/ \u6ce8\u610f: \u9664\u4e86\u5185\u7f6e\u522b\u540d,  \u4e0d\u8981\u4e71\u8d77\u522b\u540d\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n &lt;select id=\"selectNameById\"\n            parameterType=\"java.lang.Integer\"\n            resultType=\"java.lang.String\"&gt;\n        select name from account where id = #{id}\n&lt;\/select&gt;\n&lt;select id=\"selectNameById\"\n        parameterType=\"Integer\"\n        resultType=\"String\"&gt;\n    select name from account where id = #{id}\n&lt;\/select&gt;\n&lt;select id=\"selectNameById\"\n        parameterType=\"integer\"\n        resultType=\"string\"&gt;\n    select name from account where id = #{id}\n&lt;\/select&gt;\n&lt;select id=\"selectNameById\"\n            parameterType=\"_int\"\n            resultType=\"String\"&gt;\n     select name from account where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| \u522b\u540d | \u6620\u5c04\u7684\u7c7b\u578b |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212; |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _byte | byte |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _long | long |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _short | short |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _int | int |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _integer | int |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _double | double |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _float | float |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| _boolean | boolean |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| string | String |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| byte | Byte |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| long | Long |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| short | Short |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| int | Integer |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| integer | Integer |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| double | Double |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| float | Float |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| boolean | Boolean |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| date | Date |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| decimal | BigDecimal |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| bigdecimal | BigDecimal |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| object | Object |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| map | Map |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| hashmap | HashMap |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| list | List |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| arraylist | ArrayList |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| collection | Collection |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">| iterator | Iterator |<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6ce8\u610f:<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">1, typeHandlers: MyBatis \u5bf9\u6211\u4eecSQL\u53c2\u6570\u6216\u4ece\u7ed3\u679c\u96c6\u4e2d\u53d6\u51fa\u4e00\u4e2a\u503c\u65f6\uff0c \u90fd\u4f1a\u7528\u7c7b\u578b\u5904\u7406\u5668\u5c06\u83b7\u53d6\u5230\u7684\u503c\u4ee5\u5408\u9002\u7684\u65b9\u5f0f\u8f6c\u6362\u6210 Java \u7c7b\u578b\u3002(\u800c\u5728\u6211\u4eec\u4f7f\u7528\u7684\u65f6\u5019\u662f\u65e0\u6cd5\u611f\u77e5\u8fd9\u4e2a\u95ee\u9898\u7684, \u5c5e\u4e8eMyBatis\u7684\u5e95\u5c42\u5904\u7406).<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">2, ObjectFactory: MyBatis \u4f7f\u7528\u4e00\u4e2a\u5bf9\u8c61\u5de5\u5382\u5b9e\u4f8b\u6765\u5b8c\u6210\u5b9e\u4f8b\u5316\u5de5\u4f5c\u3002 \u9ed8\u8ba4\u7684\u5bf9\u8c61\u5de5\u5382\u8981\u4e48\u901a\u8fc7\u9ed8\u8ba4\u65e0\u53c2\u6784\u9020\u65b9\u6cd5\uff0c\u8981\u4e48\u901a\u8fc7\u6709\u53c2\u6570\u7684\u6784\u9020\u65b9\u6cd5\u5b9e\u4f8b\u5316\u5bf9\u8c61\u3002\u5982\u679c\u60f3\u8986\u76d6\u5bf9\u8c61\u5de5\u5382\u7684\u9ed8\u8ba4\u884c\u4e3a\uff0c\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u81ea\u5df1\u7684\u5bf9\u8c61\u5de5\u5382\u6765\u5b9e\u73b0\u3002(\u4e0d\u8981\u4f7f\u7528)<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">environments<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">environments: \u53ef\u4ee5\u914d\u7f6e\u6210\u9002\u5e94\u591a\u79cd\u73af\u5883.\u6bd4\u5982\u5f00\u53d1\u73af\u5883\u3001\u6d4b\u8bd5\u73af\u5883\u548c\u751f\u4ea7\u73af\u5883\u7b49\u53ef\u80fd\u9700\u8981\u6709\u4e0d\u540c\u7684\u914d\u7f6e.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;!-- \u73af\u5883\u7684\u914d\u7f6e\uff0c\u5176\u5b9e\u5c31\u662f\u53bb\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5--&gt;\n&lt;environments default=\"development\"&gt;\n\n   &lt;!-- \u73af\u5883\u7684id\uff0c\u662f\u552f\u4e00\u7684--&gt;\n   &lt;environment id=\"development\"&gt;\n\n       &lt;!-- \u4e8b\u52a1\u7ba1\u7406\u5668\n           JDBC:   \u4f7f\u7528JDBC\u8fde\u63a5\u6765\u7ba1\u7406\u4e8b\u52a1\n           MANAGED: \u628a\u4e8b\u52a1\u7684\u7ba1\u7406\u4ea4\u7ed9\u5916\u90e8\u7684\u5bb9\u5668 --&gt;\n       &lt;!-- \u5982\u679c\u4f60\u6b63\u5728\u4f7f\u7528 Spring + MyBatis\uff0c\u5219\u6ca1\u6709\u5fc5\u8981\u914d\u7f6e\u4e8b\u52a1\u7ba1\u7406\u5668\uff0c\n\t\t\t\u56e0\u4e3a Spring \u6a21\u5757\u4f1a\u4f7f\u7528\u81ea\u5e26\u7684\u7ba1\u7406\u5668\u6765\u8986\u76d6\u524d\u9762\u7684\u914d\u7f6e\u3002--&gt;\n       &lt;transactionManager type=\"JDBC\"\/&gt;\n\n       &lt;!--\n           POOLED\uff1a \u4f7f\u7528Mybatis\u81ea\u5e26\u7684\u8fde\u63a5\u6c60\n           UNPOOLED\uff1a\u4e0d\u4f7f\u7528\u8fde\u63a5\u6c60\n           JNDI\uff1a\u4f7f\u7528\u5916\u90e8\u7684\u8fde\u63a5\u6c60  --&gt;\n       &lt;dataSource type=\"POOLED\"&gt;\n           &lt;property name=\"driver\" value=\"${driver}\"\/&gt;\n           &lt;property name=\"url\" value=\"${url}\"\/&gt;\n           &lt;property name=\"username\" value=\"${username}\"\/&gt;\n           &lt;property name=\"password\" value=\"${password}\"\/&gt;\n       &lt;\/dataSource&gt;\n   &lt;\/environment&gt;\n   \n   &lt;environment id=\"test\"&gt;\n       &lt;transactionManager type=\"JDBC\"\/&gt;\n       &lt;dataSource type=\"POOLED\"&gt;\n           &lt;property name=\"driver\" value=\"${driver}\"\/&gt;\n           &lt;property name=\"url\" value=\"${url}\"\/&gt;\n           &lt;property name=\"username\" value=\"${username}\"\/&gt;\n           &lt;property name=\"password\" value=\"${password}\"\/&gt;\n       &lt;\/dataSource&gt;\n   &lt;\/environment&gt;\n\n   &lt;environment id=\"prod\"&gt;\n       &lt;transactionManager type=\"JDBC\"\/&gt;\n       &lt;dataSource type=\"POOLED\"&gt;\n           &lt;property name=\"driver\" value=\"${driver}\"\/&gt;\n           &lt;property name=\"url\" value=\"${url}\"\/&gt;\n           &lt;property name=\"username\" value=\"${username}\"\/&gt;\n           &lt;property name=\"password\" value=\"${password}\"\/&gt;\n       &lt;\/dataSource&gt;\n   &lt;\/environment&gt;\n&lt;\/environments&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">mappers<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u662f\u6620\u5c04\u5668\u7684\u914d\u7f6e\u3002\u914d\u7f6emapper.xml\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u914d\u7f6e\u65b9\u5f0f\u4e00: \u76f4\u63a5\u4ee5\u5bf9\u5e94mapper\u6587\u4ef6\u7684\u76f8\u5bf9\u8def\u5f84<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;configuration&gt;    \n &lt;mappers&gt;\n        &lt;mapper resource=\"com\/snow\/www\/mapper\/AccountMapper.xml\"\/&gt;\n        &lt;mapper resource=\"com\/snow\/www\/mapper\/User.xml\"\/&gt;\n    &lt;\/mappers&gt;\n&lt;\/configuration&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u914d\u7f6e\u65b9\u5f0f\u4e8c: \u914d\u7f6e\u67d0\u4e2a\u5305\u4e0b\u7684\u6240\u6709\u7684\u914d\u7f6e\u6587\u4ef6<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;configuration&gt;   \n  &lt;!--\n        1. \u63a5\u53e3\u548c\u6620\u5c04\u6587\u4ef6\u7f16\u8bd1\u540e\u8981\u5728\u540c\u4e00\u7ea7\u76ee\u5f55\uff0c\u5e76\u4e14\u540c\u540d\n        2. \u63a5\u53e3\u7684\u5168\u9650\u5b9a\u7c7b\u540d\u4f5c\u4e3a\u6620\u5c04\u6587\u4ef6\u7684\u547d\u540d\u7a7a\u95f4\n        3. \u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5\u540d\uff08\u65b9\u6cd5\u4e0d\u5141\u8bb8\u91cd\u8f7d\uff09\u4f5c\u4e3a\u6620\u5c04\u6587\u4ef6\u4e2d\u7684\u6807\u7b7eid\uff08\u4e0d\u5141\u8bb8\u91cd\u590d\uff09\n    --&gt;\n\t&lt;mappers&gt;\n        &lt;package name=\"com.snow.www.mapper\"\/&gt;\n    &lt;\/mappers&gt;\n&lt;\/configuration&gt;\n```<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u8f93\u5165\u6620\u5c04(!!!)<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u8f93\u5165\u6620\u5c04\u5176\u5b9e\u5c31\u662f\u5728\u8bf4Mybatis\u662f\u5982\u4f55\u4f20\u503c\u7684\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u6620\u5c04\u6587\u4ef6\u4e2d\u7684SQL\u8bed\u53e5\u4e2d\u7684\u8bed\u6cd5 &#8211;&gt; #{}\u91cc\u5199\u4ec0\u4e48\u4e1c\u897f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#{}\u8fd9\u4e2a\u4f4d\u7f6e \u6700\u7ec8\u5728\u9884\u7f16\u8bd1\u7684\u8fc7\u7a0b\u4e2d\u53d8\u4e3a\u4e86?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728Mapper\u63a5\u53e3\u4e2d \u65b9\u6cd5\u7684\u5f62\u53c2\u5199\u4e86\u4ec0\u4e48\u6837\u5f0f(\u4e2a\u6570\u3001\u7c7b\u578b\u3001\u6ce8\u89e3)\uff0c\u6700\u7ec8\u5728\u6620\u5c04\u6587\u4ef6\u4e2d\u8be5\u65b9\u6cd5\u5bf9\u5e94\u7684sql\u8bed\u53e5\u4e2d\u7684<strong>#{}<\/strong>\u5e94\u8be5\u5982\u4f55\u5199<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u53ea\u6709\u4e00\u4e2a\u53c2\u6570\n\/\/ \u4f20\u9012\u591a\u4e2a\u53c2\u6570\n\/\/ ....\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u4e2a\u53c2\u6570<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u53c2\u6570: (\u57fa\u672c\u7c7b\u578b\u3001\u5305\u88c5\u7c7b\u3001String)<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">1, #{\u4efb\u610f\u503c} \u6765\u53d6\u503c: \u4e0d\u5efa\u8bae\u4f7f\u7528(\u663e\u5f97\u4e0d\u6807\u51c6), \u5efa\u8bae\u4f7f\u7528\u6ce8\u89e3\u5199\u6cd5<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u867d\u7136\u4e00\u4e2a\u53c2\u6570\u7684\u65f6\u5019, \u53ef\u4ee5\u5728{}\u5185\u90e8\u4efb\u610f\u4e66\u5199\u53c2\u6570\u540d, \u8fd9\u79cd\u4e71\u5199\u884c\u4e3a\u4e0d\u597d, \u4e0d\u8981\u8fd9\u4e48\u5199\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u67e5\u627e\npublic Account selectAccountById(Integer id);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectAccountById\"  resultType=\"account\"&gt;\n     select * from account where id = #{xxx}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">2, \u5982\u679c\u5728\u65b9\u6cd5\u4e2d \u7684\u4e00\u4e2a\u53c2\u6570 \u52a0\u4e86@Param\u6ce8\u89e3\uff0c\u90a3\u4e48 \u540e\u9762\u5c31\u53ea\u80fd\u901a\u8fc7 #{\u6ce8\u89e3\u503c} \u6765\u53d6\u503c<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u67e5\u627e\npublic Account selectAccountById2(@Param(\"id\") Integer id);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectAccountById2\"   resultType=\"acc\"&gt;\n     select * from account where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u591a\u4e2a\u53c2\u6570<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u591a\u4e2a\u53c2\u6570: \u9700\u8981\u6ce8\u89e3\u6307\u660e#{\u6ce8\u89e3\u503c} \u6765\u53d6\u503c<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ 1, \u76f4\u63a5\u5199\u591a\u4e2a\u503c, \u7528\u53c2\u6570\u540d\u7b80\u5355\u5339\u914d\u662f\u4e0d\u8bc6\u522b\u7684\n\/\/ 2, \u5982\u679c\u53c2\u6570\u540d\u7b80\u5355\u5339\u914d\u662f\u4e0d\u8bc6\u522b, \u53c8\u4e0d\u60f3\u52a0\u6ce8\u89e3, \u4e5f\u662f\u6709\u522b\u7684\u89e3\u51b3\u624b\u6bb5(\u6309\u4f4d\u4f20\u503c: \u4e0d\u5efa\u8bae), \u4f46\u662f\u5efa\u8bae\u52a0\u6ce8\u89e3(\u6700\u6807\u51c6\u7684\u5199\u6cd5)\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u67e5\u627e\nList&lt;Account&gt; selectListByIdOrName(@Param(\"id\") Integer id,\n                             @Param(\"name\") String name);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectListByIdOrName\"   resultType=\"acc\"&gt;\nselect * from account where id = #{id} or name = #{name}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u5bf9\u8c61\u4f20\u503c<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5bf9\u8c61\u4f20\u503c<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u65b9\u5f0f\u4e00: SQL\u4f7f\u7528\u7684\u53c2\u6570\u547d\u540d\u8981\u548c\u5bf9\u8c61\u5185\u90e8\u5c5e\u6027\u4fdd\u6301\u4e00\u81f4 (#{\u6210\u5458\u53d8\u91cf\u540d} \u6765\u53d6\u503c)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic interface UserMapper {\n \/\/\u5bf9\u8c61\u4f20\u503c \u2192 \u6ca1\u6709\u4f7f\u7528@Param\u6ce8\u89e3 \u2192 \u6210\u5458\u53d8\u91cf\u540d\n int insert1(User user);\n\n}\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;insert id=\"insert1\"&gt;\n insert into cskaoyan_user (username, password, age, birthday, create_date, mobile) values\n (#{username},#{password},#{age},#{birthday},#{createDate},#{mobile})\n&lt;\/insert&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u65b9\u5f0f\u4e8c: \u5bf9\u8c61\u6709\u6ce8\u89e3, \u5fc5\u987b\u901a\u8fc7 #{\u6ce8\u89e3\u503c . \u6210\u5458\u53d8\u91cf\u540d} \u6765\u53d6\u503c<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/\u5bf9\u8c61\u4f20\u503c \u2192 \u4f7f\u7528@Param\u6ce8\u89e3 \u2192 @Param\u5199\u4e86\u4ec0\u4e48\u5c31\u7528\u4ec0\u4e48 \u2192 user.username\u3001user.password\u7b49\nint insert2(@Param(\"user\") User user);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;insert id=\"insert2\"&gt;\n insert into cskaoyan_user (username, password, age, birthday, create_date, mobile) values\n (#{user.username},#{user.password},#{user.age},#{user.birthday},#{user.createDate},#{user.mobile})\n&lt;\/insert&gt;\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f: \u5bf9\u8c61\u548c\u591a\u53c2\u6570\u6df7\u5408\u95ee\u9898<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4f7f\u7528Map\u4f20\u503c<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Map\u4f20\u503c: \u4e0d\u5efa\u8bae\u4f7f\u7528<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u65b9\u5f0f\u4e00: SQL\u4f7f\u7528\u7684\u53c2\u6570\u547d\u540d\u8981\u548cMap\u4e2d\u5b58\u50a8\u6570\u636e\u7684key\u4fdd\u6301\u4e00\u81f4 (#{key} \u6765\u53d6\u503c)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/Map\u4f20\u503c \u2192 \u6ca1\u6709\u4f7f\u7528@Param\u6ce8\u89e3 \u2192 #{}\u91cc\u5199\u7684\u662fmap\u7684key\uff1aid\u548cusername\n    int updateUsernameById(Map map);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;update id=\"updateUsernameById\"&gt;\n     update cskaoyan_user set username = #{username} where id = #{id}\n&lt;\/update&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u65b9\u5f0f\u4e8c: Map\u5bf9\u8c61\u6709\u6ce8\u89e3, \u5fc5\u987b\u901a\u8fc7 #{\u6ce8\u89e3\u503c . key} \u6765\u53d6\u503c<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/Map\u4f20\u503c \u2192 \u4f7f\u7528@Param\u6ce8\u89e3 \u2192 #{}\u91cc\u5199\u7684\u662f@Param\u6ce8\u89e3\u7684\u503c + map\u7684key\uff1amap.id\u548cmap.username\nint updateUsernameById2(@Param(\"map\") Map map);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;update id=\"updateUsernameById2\"&gt;\n     update cskaoyan_user set username = #{map.username} where id = #{map.id}\n&lt;\/update&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6309\u4f4d\u7f6e\u53d6\u503c<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6309\u4f4d\u4f20\u503c: \u5b8c\u5168\u4e0d\u5efa\u8bae(\u5bb9\u6613\u56e0\u4e3a\u7a0b\u5e8f\u5458\u7684\u8bb0\u5fc6\u548c\u4fee\u6539\u5bfc\u81f4bug\u4ea7\u751f, \u9664\u975e\u9664\u4e86\u6309\u4f4d\u4f20\u503c\u6ca1\u529e\u6cd5\u4e86)<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u65b9\u5f0f\u4e00: arg0\u3001arg1\u3001arg2&#8230;<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nuserMapper.insertUser(\"zs\", 18, \"\u6e56\u5317\");\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;insert id=\"insertUser\"&gt;\n       insert into `user`  set `name`=#{arg0}, age=#{arg1}, address=#{arg2}\n&lt;\/insert&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u65b9\u5f0f\u4e8c: param1\u3001param2\u3001param3&#8230;<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nuserMapper.insertUser(\"zs\", 18, \"\u6e56\u5317\");\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;insert id=\"insertUser\"&gt;\n       insert into `user`  set `name`=#{param1}, age=#{param2}, address=#{param3}\n&lt;\/insert&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5728Mybatis\u7684\u8f93\u5165\u6620\u5c04\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u4f7f\u7528\u524d\u9762\u4e09\u79cd\u65b9\u5f0f\uff08\u4f20\u5165\u4e00\u4e2a\u53c2\u6570\u3001\u4f20\u5165\u591a\u4e2a\u53c2\u6570\u3001\u4f20\u9012\u5bf9\u8c61\uff09\uff0c\u540e\u9762\u901a\u8fc7map\u4f20\u503c\u548c\u6309\u7167\u4f4d\u7f6e\u6765\u4f20\u503c \u4e00\u822c\u4e0d\u4f7f\u7528\uff0c\u4e5f\u4e0d\u5efa\u8bae\u5927\u5bb6\u4f7f\u7528\u3002<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">#\u548c$\u7684\u533a\u522b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\\${}\u505a\u7684\u5c31\u662f\u5b57\u7b26\u4e32\u7684\u62fc\u63a5\uff0c\u5982\u679c\u4f60\u4f20\u5165\u7684\u662f\u5b57\u7b26\u4e32\uff0c\u9700\u8981\u4f60\u624b\u52a8\u5728\\${}\u5916\u56f4\u624b\u52a8\u589e\u52a0\u5355\u5f15\u53f7 &#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6838\u5fc3\u70b9: \u4f7f\u7528${}\u6709sql\u6ce8\u5165\u7684\u98ce\u9669<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SQL\u6ce8\u5165\uff1a\u5728\u4f60\u6267\u884c\u7684SQL\u8bed\u53e5\u4e4b\u5916\u989d\u5916\u6267\u884c\u4e00\u90e8\u5206\uff0c\u5bfc\u81f4\u4fe1\u606f\u6cc4\u9732\u6216\u6570\u636e\u5e93\u88ab\u4e22\u5f03\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4f7f\u7528#{}\u8fc7\u7a0b\u662f\u9884\u7f16\u8bd1\uff0c\u4e0d\u4f1a\u6709SQL\u6ce8\u5165\u7684\u98ce\u9669\uff0c\u5efa\u8bae\u5927\u5bb6\u4f7f\u7528\u7684\u65b9\u5f0f<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">#{\u53c2\u6570}\u4f7f\u7528: \u9884\u7f16\u8bd1\u5360\u4f4d (\u5c3d\u91cf\u4f7f\u7528 #{} ) PreparedStatement<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nuserMapper.insertUserC(\"zs\", 18, \"\u6e56\u5317\");\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;insert id=\"insertUserC\"&gt;\n       insert into `user`  set `name`=#{param1}, age=#{param2}, address=#{param3}\n&lt;\/insert&gt;\n```<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-103-1024x250.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"250\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-103-1024x250.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-603\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">${\u53c2\u6570}\u4f7f\u7528: \u5b57\u7b26\u4e32\u62fc\u63a5, Statement (\u5b58\u5728SQL\u6ce8\u5165\u95ee\u9898)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nuserMapper.insertUserP(\"zs\", 18, \"\u6e56\u5317\");\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;insert id=\"insertUserP\"&gt;\ninsert into `user`  set `name`= '${param1}', age=${param2}, address='${param3}'\n&lt;\/insert&gt;\n```<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-104-1024x218.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"218\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-104-1024x218.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-604\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nSELECT id,product,money FROM `cskaoyan_product` where id = 3;\n\n-- \u5982\u679c\u6211\u4eec\u4f7f\u7528#{}\u7684\u65b9\u5f0f\n-- Preparing\uff1a\nSELECT id,product,money FROM `cskaoyan_product` where id = \uff1f\n-- Parameters\uff1a3\n\n-- \u5982\u679c\u6211\u4eec\u4f7f\u7528${}\u7684\u65b9\u5f0f\n-- id\u63d0\u4f9b\u7684\u503c\u662f3\n-- Preparing\uff1a\nSELECT id,product,money FROM `cskaoyan_product` where id = '3';\n-- Parameters\uff1a\n\n-- \u5982\u679c\u6709\u4e0d\u6cd5\u5206\u5b50\uff0c\u63d0\u4f9b\u7684\u53c2\u6570\u4e0d\u662f3\uff0c\u57283\u7684\u57fa\u7840\u4e0a\u989d\u5916\u641e\u4e86\u4e00\u4e9b\u4e1c\u897f\n-- 3' or '1' = '1\nSELECT id,product,money FROM `cskaoyan_product` where id = '3' or '1' = '1';\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6ce8\u610f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/1, \u6211\u4eec\u4ee5\u540e\u5f00\u53d1\u7684\u65f6\u5019\uff0c\u5e94\u8be5\u5c3d\u91cf\u4f7f\u7528 #{} \u53bb\u63a5\u6536\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570\u503c\n\/\/2, \u5f53\u6211\u4eec\u4f20\u9012\u7ed9SQL\u8bed\u53e5 \u8868\u540d\u6216\u8005\u662f\u5217\u540d\u7684\u65f6\u5019\uff0c\u5c31\u5fc5\u987b\u5f97\u4f7f\u7528 ${} \u6765\u53d6\u503c\u3002\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5206\u8868\u95ee\u9898: \u52a8\u6001\u8868\u540d<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ userMapper.dynamicTableName(\"user2\");\nuserMapper.dynamicTableName(\"user\");\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nList&lt;User&gt; dynamicTableNameList(String user);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"dynamicTableNameList\" resultType=\"com.snow.www.bean.User\"&gt;\n       select * from ${user}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5206\u5217\u95ee\u9898: \u52a8\u6001\u5217\u540d<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/  List&lt;User&gt; list = userMapper.dynamicColumnName(\"id\");\n List&lt;User&gt; list = userMapper.dynamicColumnName(\"age\");\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nList&lt;User&gt; dynamicColumnName(String age);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"dynamicColumnName\" resultType=\"com.snow.www.bean.User\"&gt;\n       select * from user order by ${column}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5206\u8868\u7684\u601d\u8003.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u601d\u8003<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MyBatis\u5728\u8f93\u5165\u6620\u5c04\u8fc7\u7a0b\u4e2d\u6709\u4f20\u5165\u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\uff0c\u90a3\u4e48\u8fd9\u4e2a\u8fc7\u7a0b\u662f\u5bf9JDBC\u505a\u5c01\u88c5\uff0c\u601d\u8003\u4e00\u4e2a\u95ee\u9898\u5c31\u662fJDBC\u8fc7\u7a0b\u4f1a\u5982\u4f55\u4f7f\u7528\u6211\u4eec\u7684\u5bf9\u8c61\u7684<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bd4\u5982\u8fd9\u4e2a\u63a5\u53e3\u548c\u65b9\u6cd5<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic interface UserMapper {\n    \/\/\u5bf9\u8c61\u4f20\u503c \u2192 \u6ca1\u6709\u4f7f\u7528@Param\u6ce8\u89e3 \u2192 \u6210\u5458\u53d8\u91cf\u540d\n    int insert1(User user);\n}\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9JDBC\u8fc7\u7a0b\u5728\u5206\u89e3\u4e00\u4e0b<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nConnection connection = ConnectionUtil.getConnection();\nPreparedStatement preparedStatement = connection.preparedStatement(\"insert into cskaoyan_user (username, password, age, birthday, create_date, mobile) values (?,?,?,?,?,?)\");\n\/\/ \u4f20\u5165\u7684\u662fuser\u5bf9\u8c61\npreparedStatement.setString(1,user.getUsername());\npreparedStatement.setString(2,user.getPassword());\n...\n  \n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8f93\u5165\u6620\u5c04\uff0cMyBatis\u5982\u4f55\u4f7f\u7528\u7684user\uff0c\u901a\u8fc7<strong>get\u65b9\u6cd5<\/strong>\u6765\u4f7f\u7528\u7684<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8f93\u51fa\u6620\u5c04(!!!)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u5b9a\u548c\u67e5\u8be2\u6709\u5173\u7cfb \u2192 \u4e00\u5b9a\u5bf9\u5e94\u7684\u662fselect\u6807\u7b7e<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4f7f\u7528select\u6807\u7b7e\u4e00\u5b9a\u4f1a\u4f7f\u7528\u548c\u7c7b\u578b\u6709\u5173\u7cfb\u7684\u5c5e\u6027\uff1aresultType\u3001resultMap<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>resultType\u4e2d\u53ef\u4ee5\u5199\u522b\u540d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>resultType\u5199\u7684\u662f\u5355\u6761\u8bb0\u5f55\u7684\u7c7b\u578b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n-- \u53ea\u67091\u5217\uff0c\u5e76\u4e14\u8bb0\u5f55\u6570\u4e3a1\u6761  \u2192 \u67e5\u8be2user\u8868\u4e2d\u6709\u591a\u5c11\u6761\u8bb0\u5f55\n-- \u4e00\u4e2aint\u6216Integer\u7c7b\u578b\u7684\u503c\u6765\u63a5\u6536\nselect count(*) from cskaoyan_user ;\n\n-- \u53ea\u6709\u4e00\u5217\uff0c\u7ed3\u679c\u7684\u8bb0\u5f55\u6570\u4e3a\u591a\u6761 \u2192 \u67e5\u8be2\u5e74\u9f84\u4e3axxx\u7684\u7528\u6237\u7684\u540d\u79f0\n-- \u6570\u7ec4\u6216List\u3001Set\nselect username from cskaoyan_user where age = 25;\n\n-- \u591a\u5217\uff0c\u7ed3\u679c\u7684\u8bb0\u5f55\u6570\u4e3a1\u6761 \u2192 \u67e5\u8be2id\u4e3a\u67d0\u4e2a\u503c\u7684\u7528\u6237\u7684\u5168\u90e8\u4fe1\u606f\n-- \u5f15\u7528\u7c7b\u578b\u5bf9\u8c61\nselect id,username,password,age,birthday,create_date,mobile from cskaoyan_user where id = 2;\n\n-- \u591a\u5217\uff0c\u7ed3\u679c\u7684\u8bb0\u5f55\u6570\u4e3a\u591a\u6761 \u2192 \u67e5\u8be2\u5e74\u9f84\u4e3axxx\u7684\u7528\u6237\u7684\u5168\u90e8\u4fe1\u606f\n-- \u5f15\u7528\u7c7b\u578b\u5bf9\u8c61\u7684\u6570\u7ec4\u6216List\u3001Set\nselect id,username,password,age,birthday,create_date,mobile from cskaoyan_user where age = 25;\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u9009\u62e9\u4f55\u79cd\u5c01\u88c5\u7c7b\u578b\uff1a\u53d6\u51b3\u4e8e\u7ed3\u679c\u96c6\u4e2d\u7684\u5217\u7684\u4e2a\u6570\uff0c\u4ee5\u53ca\u7ed3\u679c\u7684\u8bb0\u5f55\u6570<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5c01\u88c5\u6700\u7ec8\u4f53\u73b0\u5728\u54ea\u91cc\uff1f\u843d\u811a\u70b9\u5728Mapper\u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5\u7684\u8fd4\u56de\u503c\u7c7b\u578b<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u8f93\u51fa\u6620\u5c04\u662f\u6307Mybatis\u662f\u5982\u4f55\u628aSQL\u8bed\u53e5\u6267\u884c\u7ed3\u679c\u6620\u5c04\u4e3a Java\u5bf9\u8c61\u7684\u3002<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u4e00\u4e2a\u53c2\u6570\n\/\/ \u591a\u4e2a\u53c2\u6570\n\/\/ \u5355\u4e2a\u5bf9\u8c61\n\/\/ \u591a\u4e2a\u5bf9\u8c61\n\/\/ resultMap: \u6bd4\u8f83\u91cd\u8981(\u5f88\u5e38\u7528)\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u4e2a\u7ed3\u679c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u679c\u5217\u4e3a1\u4e14\u8bb0\u5f55\u6570\u4e3a1\uff08\u62160\uff09<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u53c2\u6570: \u5fc5\u987b\u8981\u6709resultType(\u5199\u7b80\u5355\u53c2\u6570\u7684<code>\u5168\u9650\u5b9a\u540d\u79f0<\/code>\u6216\u8005\u662f<code>\u5185\u7f6e\u7684\u522b\u540d<\/code>)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u5355\u4e2a\u5217\uff0c\u7ed3\u679c\u8bb0\u5f55\u6570\u4e3a1\nint selectCount();\nString selectNameById(@Param(\"id\") Integer id);\/\/List&lt;String&gt; list \u2192 list.get(0)\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectCount\" resultType=\"int\"&gt;\n select count(*) from cskaoyan_user\n&lt;\/select&gt;\n\n   &lt;select id=\"selectNameById\" resultType=\"java.lang.String\"&gt;\n select username from cskaoyan_user where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u591a\u4e2a\u7ed3\u679c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5217\u53ea\u6709\u4e00\u5217\uff0c\u7ed3\u679c\u96c6\u4e2d\u7684\u8bb0\u5f55\u6570\u6709\u591a\u6761\uff080\u62161\u6761\uff09<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6307: \u591a\u4e2a\u53c2\u6570\u6784\u6210\u7684\u6570\u7ec4\/List\/Set<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u5f53\u6211\u4eec\u8fd4\u56de\u591a\u4e2a\u7b80\u5355\u53c2\u6570\u7684\u65f6\u5019\uff0c\u5728\u65b9\u6cd5\u4e2d\u5b9a\u4e49\u7684\u662f\u6570\u7ec4\u5c31\u4f1a\u8fd4\u56de\u6570\u7ec4\uff0c\u5b9a\u4e49\u7684\u662f\u96c6\u5408\u5c31\u4f1a\u8fd4\u56de\u96c6\u5408\u3002xml\u4e2d\u7684\u6807\u7b7e\u914d\u7f6e\u4e0d\u9700\u8981\u6539\u53d8\u3002\u5e76\u4e14, resultType\u7684\u503c\u662f\u5355\u4e2a\u5143\u7d20\u7684\u7c7b\u578b\u3002\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u5355\u4e2a\u5217\uff0c\u7ed3\u679c\u8bb0\u5f55\u6570\u4e3a\u591a\u6761\n\/\/ \u6309\u7167\u4e0d\u540c\u7684\u7c7b\u578b\u6765\u5c01\u88c5\uff0c\u4f46\u662fSQL\u8bed\u53e5\u662f\u4e00\u6837\u7684\nString[] selectNamesByAge1(@Param(\"age\") Integer age);\nList&lt;String&gt; selectNamesByAge2(@Param(\"age\") Integer age);\nSet&lt;String&gt; selectNamesByAge3(@Param(\"age\") Integer age);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectNamesByAge1\" resultType=\"java.lang.String\"&gt;\n  select username from cskaoyan_user where age = #{age}\n&lt;\/select&gt;\n&lt;select id=\"selectNamesByAge2\" resultType=\"java.lang.String\"&gt;\n  select username from cskaoyan_user where age = #{age}\n&lt;\/select&gt;\n&lt;select id=\"selectNamesByAge3\" resultType=\"java.lang.String\"&gt;\n  select username from cskaoyan_user where age = #{age}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u5355\u4e2a\u5bf9\u8c61<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6838\u5fc3\u70b9\uff1a\u67e5\u8be2\u7ed3\u679c\u96c6\u4e2d\u7684\u5217\u540d \u8981\u548c \u5bf9\u8c61\u4e2d\u7684\u6210\u5458\u53d8\u91cf\u540d\uff08set\u65b9\u6cd5\uff09\u76f8\u540c<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u67e5\u8be2\u7ed3\u679c\u96c6\u4e2d\u7684\u5217\u540d\u53ef\u4ee5\u901a\u8fc7as\u8d77\u522b\u540d\u7684\u65b9\u5f0f\u505a\u4fee\u6539<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5355\u4e2a\u5bf9\u8c61:<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ 1. Mybatis\u5728\u53bb\u6620\u5c04\u7684\u65f6\u5019\uff0c\u4f1a\u628a`\u6210\u5458\u53d8\u91cf\u540d` \u548c`\u67e5\u8be2\u7ed3\u679c\u7684\u5217\u540d`\u53bb\u4e00\u4e00\u6620\u5c04\uff0c\u5047\u5982\u539f\u59cb\u8868\u4e2d\u7684\u5217\u540d\u548c\u6210\u5458\u53d8\u91cf\u540d\u4e0d\u4e00\u81f4\u7684\u8bdd\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u53d6\u522b\u540d\u7684\u65b9\u5f0f\u6765\u89e3\u51b3(\u4e5f\u53ef\u4ee5\u901a\u8fc7resultMap\u6765\u89e3\u51b3)\n\/\/ 2. \u5728\u58f0\u660eJavaBean\u7684\u6210\u5458\u53d8\u91cf\u7684\u65f6\u5019\uff0c\u5c3d\u91cf\u7684\u4f7f\u7528\u5305\u88c5\u7c7b\u578b\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u591a\u4e2a\u5217\uff0c\u7ed3\u679c\u8bb0\u5f55\u6570\u4e3a1\nUser selectByPrimaryKey(@Param(\"id\") Integer id);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectByPrimaryKey\" resultType=\"com.cskaoyan.demo2.bean.User\"&gt;\n select id, username, password, age, birthday, create_date as createDate, mobile from cskaoyan_user\n where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u591a\u4e2a\u5bf9\u8c61<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u662f\u91c7\u7528JDBC\u4f1a\u5982\u4f55\u5199<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nResultSet resultSet = prepareStatement.executeQuery();\nList&lt;User&gt; users = new ArrayList&lt;&gt;();\nwhile(resultSet.next()){\n  User user = new User();\n  user.setUsername(resultSet.getString(\"username\"));\n  user.setPassword(resultSet.getString(\"password\"));\n  user.setAge(resultSet.getInt(\"age\"));\n  user.setBirthday(resultSet.getDate(\"birthday\"));\n  user.setCreateDate(resultSet.getDate(\"createDate\"));\n  user.setMobile(resultSet.getString(\"mobile\"));\n  users.add(user);\n}\n\/\/\u5982\u679c\u4f60\u9700\u8981\u4e00\u4e2aSet\u53ef\u4ee5\u5728\u7b2c2\u884c\u8fd9\u91cc\u5b9a\u4e49\u4e3a\u4e00\u4e2aset \uff0c\u4e5f\u53ef\u4ee5\u5c06\u8fd9\u4e2aList\u8f6c\u4e3a\u4e00\u4e2aSet\n\/\/\u5982\u679c\u4f60\u9700\u8981\u4e00\u4e2a\u6570\u7ec4\uff0c\u4e5f\u53ef\u4ee5\u5c06\u8fd9\u4e2aList\u8f6c\u4e3a\u4e00\u4e2a\u6570\u7ec4\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u591a\u4e2a\u5bf9\u8c61: \u6570\u7ec4\/List\/Set<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/1,  resultType\u7684\u503c\u662f\u5355\u4e2a\u5143\u7d20\u7684\u7c7b\u578b\u3002\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u591a\u4e2a\u5217\uff0c\u7ed3\u679c\u8bb0\u5f55\u6570\u4e3a\u591a\u6761\nUser[] selectByAge1(@Param(\"age\") Integer age);\n\nList&lt;User&gt; selectByAge2(@Param(\"age\") Integer age);\n\nSet&lt;User&gt; selectByAge3(@Param(\"age\") Integer age);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;select id=\"selectByAge1\" resultType=\"com.cskaoyan.demo2.bean.User\"&gt;\n select id, username, password, age, birthday, create_date as createDate, mobile from cskaoyan_user\n where age = #{age}\n&lt;\/select&gt;\n&lt;select id=\"selectByAge2\" resultType=\"com.cskaoyan.demo2.bean.User\"&gt;\n select id, username, password, age, birthday, create_date as createDate, mobile from cskaoyan_user\n where age = #{age}\n&lt;\/select&gt;\n&lt;select id=\"selectByAge3\" resultType=\"com.cskaoyan.demo2.bean.User\"&gt;\n select id, username, password, age, birthday, create_date as createDate, mobile from cskaoyan_user\n where age = #{age}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">resultMap<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6838\u5fc3\u70b9\uff1a\u67e5\u8be2\u7ed3\u679c\u96c6\u4e2d\u7684\u5217\u540d \u8981\u548c \u5bf9\u8c61\u4e2d\u7684\u6210\u5458\u53d8\u91cf\u540d\uff08set\u65b9\u6cd5\uff09\u5bf9\u5e94<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b58\u5728\u8fd9\u6837\u7684\u5bf9\u5e94\u5173\u7cfb\uff0c\u6211\u4eec\u624d\u77e5\u9053\u4ece\u7ed3\u679c\u96c6\u62ff\u90a3\u4e00\u5217\u7684\u503c(resultSet.getString(&#8220;\u5217\u540d&#8221;))\uff0c\u83b7\u5f97\u7684\u503c\u8981\u5c01\u88c5\u7ed9\u54ea\u4e00\u4e2a\u6210\u5458\u53d8\u91cf<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">resultMap: \u662f\u7528\u6765\u505a\u53c2\u6570\u6620\u5c04\u7684<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n@Data\n   public class UserVo {\n     private Integer userId;\n     private String userName;\n     private Integer userAge;\n private String userMobile;\n}\n \n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n UserVo selectUserVoByPrimaryKey(@Param(\"id\") Integer id);\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;!--id\u5c5e\u6027\uff1a\u8981\u548cselect\u6807\u7b7e\u4e2d\u7684resultMap\u5c5e\u6027\u5efa\u7acb\u8054\u7cfb--&gt;\n&lt;!--type\u5c5e\u6027\uff1a\u5199\u7684\u662f\u8981\u5c01\u88c5\u7684\u5bf9\u8c61\u7684\u5168\u9650\u5b9a\u7c7b\u540d\uff08\u6216\u522b\u540d\uff09--&gt;\n&lt;resultMap id=\"userVoMap\" type=\"com.cskaoyan.demo2.bean.UserVo\"&gt;\n &lt;!--\u67e5\u8be2\u7ed3\u679c\u96c6\u4e2d\u7684\u5217\u540d\u8981\u548c\u6210\u5458\u53d8\u91cf\u540d\u5efa\u7acb\u6620\u5c04\u5173\u7cfb--&gt;  \n &lt;id column=\"id\" property=\"userId\"\/&gt;\n &lt;result column=\"age\" property=\"userAge\"\/&gt;\n &lt;result column=\"username\" property=\"userName\"\/&gt;\n &lt;result column=\"mobile\" property=\"userMobile\"\/&gt;\n&lt;\/resultMap&gt;\n&lt;!--resultMap\u5c5e\u6027\u4e2d\u5199\u7684\u662f\u5f15\u7528\u7684resultMap\u6807\u7b7e\u7684id--&gt;\n&lt;select id=\"selectUserVoByPrimaryKey\" resultMap=\"userVoMap\"&gt;\n     select id,username,age,mobile from cskaoyan_user where id = #{id}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">resultMap\u662f\u53ef\u4ee5\u590d\u7528\u7684<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u63d2\u4ef6<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lombok<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Lombok: \u53ef\u4ee5\u5e2e\u52a9\u4ee3\u7801\u5728\u7f16\u8bd1\u7684\u65f6\u5019\u751f\u6210\u5bf9\u5e94\u7684\u65b9\u6cd5\u3002<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ getter\n\/\/ setter\n\/\/ toString\n\/\/ hashCode\n\/\/ equals\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u6b65: \u5b89\u88c5\u63d2\u4ef6<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-105-1024x272.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"272\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-105-1024x272.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-605\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e8c\u6b65: \u5bfc\u5305<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;dependency&gt;\n       &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\n       &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\n       &lt;version&gt;1.18.12&lt;\/version&gt;\n&lt;\/dependency&gt;\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\u6b65: \u4f7f\u7528<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/@Getter@Setter@ToString@EqualsAndHashCode\n\/\/@NoArgsConstructor\n\/\/@AllArgsConstructor\n\n@Data\npublic class UserVo {\n\n   private Integer userId;\n   private String userName;\n   private Integer userAge;\n   private String address;\n\n}\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Lombok: \u597d\u5904<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ 1. \u4f18\u52bf\n\u5728\u53bb\u4fee\u6539\uff08\u589e\u5220\u6539\uff09\u6210\u5458\u53d8\u91cf\u7684\u65f6\u5019\uff0c\u4e0d\u7528\u6211\u4eec\u81ea\u5df1\u518d\u53bb\u751f\u6210getter\u3001setter\u7b49\uff0c\u6548\u7387\u6bd4\u8f83\u9ad8\n\n\/\/ 2. \u7f3a\u70b9\nLombok\u5728\u9879\u76ee\u4e2d\uff0c\u53ea\u8981\u6709\u4e00\u4e2a\u4eba\u7528\u4e86\uff0c\u90a3\u4e48\u5176\u4ed6\u7684\u7ec4\u5458\u4e5f\u90fd\u8981\u4f7f\u7528\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">MybatisCodeHelperPro<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">MybatisCodeHelperPro: \u8fd9\u4e2a\u662fMybatis\u7684\u4e00\u4e2a\u63d2\u4ef6(\u63d0\u9ad8\u5f00\u53d1Mybatis\u5e94\u7528\u7a0b\u5e8f\u7684\u6548\u7387)\u3002<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u5e2e\u52a9\u6211\u4eec\u5728mapper\u548cmapper.xml \u4e4b\u524d\u6765\u56de\u8df3\u8f6c\n\/\/ \u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u751f\u6210mapper.xml\u6587\u4ef6\u4e2d\u7684\u6807\u7b7e\n\/\/ \u53ef\u4ee5\u505a\u4e00\u5b9a\u7684\u4ee3\u7801\u63d0\u793a\n\/\/ ...\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6b65\u9aa4\u4e00: \u63d2\u4ef6\u5b89\u88c5<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-107-1024x338.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"338\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-107-1024x338.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-607\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u591a\u8868\u67e5\u8be2(!!!)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u5bf9\u4e00\u7ed3\u6784<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7ed3\u6784\u793a\u4f8b<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-108-1024x276.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"276\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-108-1024x276.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-608\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nCREATE TABLE `cskaoyan_user` (\n`id` int(11) NOT NULL AUTO_INCREMENT,\n`username` varchar(255) DEFAULT NULL,\n`password` varchar(255) DEFAULT NULL,\n`age` int(11) DEFAULT NULL,\n`birthday` datetime DEFAULT NULL,\n`create_date` datetime DEFAULT NULL,\n`mobile` varchar(255) DEFAULT NULL,\nPRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8mb4;\nCREATE TABLE `cskaoyan_user_detail` (\n`id` int(11) NOT NULL AUTO_INCREMENT,\n`phone` varchar(255) DEFAULT NULL,\n`email` varchar(255) DEFAULT NULL,\n`user_id` int(11) DEFAULT NULL,\nPRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class User {\n\nprivate Integer id;\n private String username;\n private String password;\n private Integer age;\n private Date birthday;\n private Date createDate;\n private String mobile;\n private UserDetail userDetail;\n}\n@Data\npublic class UserDetail {\nInteger id;\nString phone;\nString email;\n String userId;\n}\n```<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u65b9\u5f0f\u4e00: \u5206\u6b21\u67e5\u8be2<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper\u63a5\u53e3<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/\u67e5\u8be2\u5230user\u7684\u4fe1\u606f\uff0c\u5e76\u4e14\u4e5f\u80fd\u67e5\u8be2\u5230userDetail\u7684\u4fe1\u606f\nUser selectUserByUsername(@Param(\"username\") String username);\n\nUser[] selectUsersInIdArray(@Param(\"ids\") Integer[] ids);\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper.xml\u6587\u4ef6\u548cUserDetailMapper.xml\u6587\u4ef6<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;mapper namespace=\"com.cskaoyan.demo2.mapper.UserMapper\"&gt;\n&lt;resultMap id=\"userMap\" type=\"com.cskaoyan.vo.User\"&gt;\n&lt;result column=\"id\" property=\"id\"\/&gt;\n&lt;result column=\"username\" property=\"username\"\/&gt;\n&lt;result column=\"password\" property=\"password\"\/&gt;\n&lt;result column=\"age\" property=\"age\"\/&gt;\n&lt;result column=\"birthday\" property=\"birthday\"\/&gt;\n&lt;result column=\"mobile\" property=\"mobile\"\/&gt;\n&lt;!--column\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u67e5\u8be2\u7ed3\u679c\u7684\u5217\u540d--&gt;\n&lt;!--property\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u7236\u6807\u7b7e\u7c7b\u578b\u7684\u6210\u5458\u53d8\u91cf\u540d--&gt;\n&lt;result column=\"create_date\" property=\"createDate\"\/&gt;\n&lt;!--\u65b0\u7684\u6807\u7b7eassociation \u2192 \u4e00\u5bf9\u4e00\u5173\u7cfb--&gt;\n&lt;!--column\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u67e5\u8be2\u7ed3\u679c\u7684\u5217\u540d,\u5bf9\u5e94\u7684\u662f\u7b2c\u4e00\u6b21\u67e5\u8be2\u7684\u67e5\u8be2\u7ed3\u679c\u7684\u5217\u540d\uff0c\u5e76\u4e14\u4e5f\u4f5c\u4e3a\u7b2c\u4e8c\u6b21\u67e5\u8be2\u7684\u53c2\u6570--&gt;\n&lt;!--property\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u7236\u6807\u7b7e\u7c7b\u578b\u7684\u6210\u5458\u53d8\u91cf\u540d--&gt;\n&lt;!--select\u5c5e\u6027\uff1a\u6267\u884c\u7684\u7b2c\u4e8c\u4e2asql\u662f\u8c01 \u2192 \u7b2c\u4e8c\u6b21\u67e5\u8be2\u7684\u547d\u540d\u7a7a\u95f4+id \u2192 \u91c7\u7528\u7684\u53c2\u6570\u662f\u7b2c\u4e00\u6b21\u67e5\u8be2\u7ed3\u679c\u7684column\u5c5e\u6027\u5217\u5bf9\u5e94\u7684\u7ed3\u679c--&gt;\n&lt;association column=\"id\" property=\"userDetail\"\n           select=\"com.cskaoyan.mapper.UserMapper.selectUserDetailByUserId\"\/&gt;\n&lt;\/resultMap&gt;\n\n&lt;select id=\"selectUserByUsername\" resultMap=\"userMap\"&gt;\nSELECT id, username, password, age, mobile, birthday, create_date\nfrom cskaoyan_user\nwhere username = #{username}\n&lt;\/select&gt;\n\n&lt;select id=\"selectUserDetailByUserId\" resultType=\"com.cskaoyan.vo.UserDetail\"&gt;\nselect id, phone, email\nfrom cskaoyan_user_detail\nwhere user_id = #{id}\n&lt;\/select&gt;\n&lt;\/mapper&gt;\n```<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-109-1024x223.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"223\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-109-1024x223.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-609\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">\u65b9\u5f0f\u4e8c: \u8fde\u63a5\u67e5\u8be2<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-110.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"998\" height=\"416\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-110.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-610\"  sizes=\"auto, (max-width: 998px) 100vw, 998px\" \/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper\u63a5\u53e3<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/\/ \u901a\u8fc7\u5de6\u8fde\u63a5\u67e5\u8be2\u7684\u65b9\u5f0f\u6765\u67e5\u8be2\u3001\u5c01\u88c5\nUser selectUserByUsernameLeftJoin(@Param(\"username\") String username);\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper.xml<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;resultMap id=\"userMap2\" type=\"com.cskaoyan.demo2.bean.User\"&gt;\n&lt;id column=\"id\" property=\"id\"\/&gt;\n&lt;result column=\"username\" property=\"username\"\/&gt;\n&lt;result column=\"password\" property=\"password\"\/&gt;\n&lt;result column=\"age\" property=\"age\"\/&gt;\n&lt;result column=\"birthday\" property=\"birthday\"\/&gt;\n&lt;result column=\"create_date\" property=\"createDate\"\/&gt;\n&lt;result column=\"mobile\" property=\"mobile\"\/&gt;\n&lt;!--\u8fdb\u4e00\u6b65\u5efa\u7acb\u6620\u5c04\u5173\u7cfb--&gt;\n&lt;association property=\"userDetail\" javaType=\"com.cskaoyan.demo2.bean.UserDetail\"&gt;\n&lt;id column=\"udid\" property=\"id\"\/&gt;\n&lt;result column=\"phone\" property=\"phone\"\/&gt;\n&lt;result column=\"email\" property=\"email\"\/&gt;\n&lt;result column=\"user_id\" property=\"userId\"\/&gt;\n&lt;\/association&gt;\n&lt;\/resultMap&gt;\n&lt;select id=\"selectUserByUsernameLeftJoin\" resultMap=\"userMap2\"&gt;\nselect\nu.id,\nu.username,\nu.password,\nu.age,\nu.birthday,\nu.create_date,\nu.mobile,\nud.id as udid,\nud.phone,\nud.email,\nud.user_id\nfrom cskaoyan_user u\nLEFT JOIN cskaoyan_user_detail ud on u.id = ud.user_id\nwhere u.username = #{username}\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u5bf9\u591a\u7ed3\u6784<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7ed3\u6784\u793a\u4f8b<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-113-1024x187.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"187\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-113-1024x187.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-613\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nCREATE TABLE `cskaoyan_order` (\n`id` int(11) NOT NULL AUTO_INCREMENT,\n`name` varchar(255) DEFAULT NULL,\n`price` decimal(10,2) DEFAULT NULL,\n`user_id` int(11) DEFAULT NULL,\nPRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class Order {\n\nprivate Integer id;\nprivate String name;\nprivate Double price;\n}\n@Data\n@AllArgsConstructor\n@NoArgsConstructor\npublic class User {\n\nprivate Integer id;\nprivate String username;\nprivate String password;\nprivate Integer age;\nprivate Date birthday;\nprivate Date createDate;\nprivate String mobile;\nprivate UserDetail userDetail;\nprivate List&lt;Order&gt; orders;\n}\n```<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u65b9\u5f0f\u4e00: \u5206\u6b21\u67e5\u8be2<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-111-1024x227.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"227\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-111-1024x227.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-611\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper\u63a5\u53e3<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nUser selectByPrimaryKey(@Param(\"id\") Integer id);\nUser selectByUsername(@Param(\"username\") String username);\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper.xml<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;mapper namespace=\"com.cskaoyan.demo3.mapper.UserMapper\"&gt;\n&lt;sql id=\"Base_User_Select\"&gt;\nselect id, username, password, age, birthday, create_date, mobile  from cskaoyan_user\n&lt;\/sql&gt;\n&lt;resultMap id=\"userMap\" type=\"com.cskaoyan.demo3.bean.User\"&gt;\n&lt;id column=\"id\" property=\"id\"\/&gt;\n&lt;result column=\"username\" property=\"username\"\/&gt;\n&lt;result column=\"password\" property=\"password\"\/&gt;\n&lt;result column=\"age\" property=\"age\"\/&gt;\n&lt;result column=\"birthday\" property=\"birthday\"\/&gt;\n&lt;result column=\"create_date\" property=\"createDate\"\/&gt;\n&lt;result column=\"mobile\" property=\"mobile\"\/&gt;\n&lt;collection property=\"orders\" column=\"id\" select=\"com.cskaoyan.demo3.mapper.OrderMapper.selectByUserId\"\/&gt;\n&lt;\/resultMap&gt;\n&lt;select id=\"selectByPrimaryKey\" resultMap=\"userMap\"&gt;\n&lt;include refid=\"Base_User_Select\"\/&gt;\nwhere id = #{id}\n&lt;\/select&gt;\n\n&lt;select id=\"selectByUsername\" resultMap=\"userMap\"&gt;\n&lt;include refid=\"Base_User_Select\"\/&gt;\nwhere username = #{username}\n&lt;\/select&gt;\n&lt;\/mapper&gt;\n&lt;mapper namespace=\"com.cskaoyan.demo3.mapper.OrderMapper\"&gt;\n&lt;resultMap id=\"orderMap\" type=\"com.cskaoyan.demo3.bean.Order\"&gt;\n&lt;id column=\"id\" property=\"id\"\/&gt;\n&lt;result column=\"name\" property=\"name\"\/&gt;\n&lt;result column=\"price\" property=\"price\"\/&gt;\n&lt;\/resultMap&gt;\n&lt;select id=\"selectByUserId\" resultMap=\"orderMap\"&gt;\nselect id, name, price, user_id from cskaoyan_order where user_id = #{userId}\n&lt;\/select&gt;\n&lt;\/mapper&gt;\n```<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u65b9\u5f0f\u4e8c: \u8fde\u63a5\u67e5\u8be2<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper\u63a5\u53e3<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nUser[] selectUsersByIdArrayLeftJoin(@Param(\"ids\") Integer[] ids);\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">UserMapper.xml<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;resultMap id=\"userMapLeftJoin\" type=\"com.cskaoyan.vo.User\"&gt;\n&lt;result column=\"id\" property=\"id\"\/&gt;\n&lt;result column=\"username\" property=\"username\"\/&gt;\n&lt;result column=\"password\" property=\"password\"\/&gt;\n&lt;result column=\"age\" property=\"age\"\/&gt;\n&lt;result column=\"birthday\" property=\"birthday\"\/&gt;\n&lt;result column=\"mobile\" property=\"mobile\"\/&gt;\n&lt;!--column\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u67e5\u8be2\u7ed3\u679c\u7684\u5217\u540d--&gt;\n&lt;!--property\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u7236\u6807\u7b7e\u7c7b\u578b\u7684\u6210\u5458\u53d8\u91cf\u540d--&gt;\n&lt;result column=\"create_date\" property=\"createDate\"\/&gt;\n&lt;!--\u548c\u4e00\u5bf9\u4e00\u7c7b\u578b\u7684\u8868\u8fbe\u4e0d\u540c--&gt;\n&lt;collection property=\"orders\" ofType=\"com.cskaoyan.vo.Order\"&gt;\n&lt;result column=\"oid\" property=\"id\"\/&gt;\n&lt;result column=\"name\" property=\"name\"\/&gt;\n&lt;result column=\"price\" property=\"price\"\/&gt;\n&lt;\/collection&gt;\n&lt;\/resultMap&gt;\n&lt;select id=\"selectUsersByIdArrayLeftJoin\" resultMap=\"userMapLeftJoin\"&gt;\nselect\nu.id,u.username,u.password,u.age,u.mobile,u.birthday,u.create_date,\no.id as oid, o.name, o.price\nfrom cskaoyan_user u\nleft join cskaoyan_order o on u.id = o.user_id\nwhere u.id in\n&lt;foreach collection=\"ids\" item=\"id\" separator=\",\" open=\"(\" close=\")\"&gt;\n#{id}\n&lt;\/foreach&gt;\n&lt;\/select&gt;\n```<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u591a\u5bf9\u591a\u7ed3\u6784<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u7ed3\u6784\u793a\u4f8b<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-112.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"279\" data-original=\"https:\/\/larkdrop.cafe\/wp-content\/uploads\/2026\/04\/image-112.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-612\"  sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">```\nCREATE TABLE `cskaoyan_relation` (\n`id` int(11) NOT NULL AUTO_INCREMENT,\n`stu_id` int(11) DEFAULT NULL,\n`c_id` int(11) DEFAULT NULL,\nPRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;\nCREATE TABLE `cskaoyan_student` (\n`id` int(11) NOT NULL AUTO_INCREMENT,\n`name` varchar(255) DEFAULT NULL,\nPRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;\nCREATE TABLE `cskaoyan_course` (\n`id` int(11) NOT NULL AUTO_INCREMENT,\n`name` varchar(255) DEFAULT NULL,\nPRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n@Data\npublic class Student {\nInteger id;\nString name;\n List&lt;Course&gt; courses;\n}\n@Data\npublic class Course {\nInteger id;\nString name;\nList&lt;Student&gt; students;\n}\n```<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u65b9\u5f0f\u4e00: \u5206\u6b21\u67e5\u8be2<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Mapper\u63a5\u53e3<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic interface StudentMapper {\n\n Student selectByName(@Param(\"name\") String name);\n}\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Mapper.xml<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;mapper namespace=\"com.cskaoyan.mapper.StudentMapper\"&gt;\n&lt;!--\u8be5\u6620\u5c04\u6587\u4ef6\u91cc\u91c7\u7528\u7684\u662f\u5206\u6b21\u67e5\u8be2--&gt;\n&lt;resultMap id=\"studentMap\" type=\"com.cskaoyan.vo.Student\"&gt;\n &lt;result column=\"id\" property=\"id\"\/&gt;\n&lt;result column=\"name\" property=\"name\"\/&gt;\n &lt;collection property=\"courses\" column=\"id\" select=\"com.cskaoyan.mapper.StudentMapper.selectCoursesByStudentId\"\/&gt;\n&lt;\/resultMap&gt;\n&lt;select id=\"selectByName\" resultMap=\"studentMap\"&gt;\n select id, name\n    from cskaoyan_student\n where name = #{name}\n&lt;\/select&gt;\n\n\n  &lt;resultMap id=\"courseMap\" type=\"com.cskaoyan.vo.Course\"&gt;\n &lt;result column=\"id\" property=\"id\"\/&gt;\n    &lt;result column=\"name\" property=\"name\"\/&gt;\n  &lt;\/resultMap&gt;\n\n  &lt;select id=\"selectCoursesByStudentId\" resultMap=\"courseMap\"&gt;\n select c.id, c.name\n from cskaoyan_course c\n left join cskaoyan_relation r on c.id = r.c_id\n    where r.stu_id = #{id}\n  &lt;\/select&gt;\n&lt;\/mapper&gt;\n```<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u65b9\u5f0f\u4e8c: \u8fde\u63a5\u67e5\u8be2<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Mapper\u63a5\u53e3<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\npublic interface CourseMapper {\nCourse selectByName(@Param(\"name\") String name);\n}\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Mapper.xml<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n&lt;mapper namespace=\"com.cskaoyan.mapper.CourseMapper\"&gt;\n&lt;resultMap id=\"courseMap\" type=\"com.cskaoyan.vo.Course\"&gt;\n&lt;result column=\"id\" property=\"id\"\/&gt;\n&lt;result column=\"name\" property=\"name\"\/&gt;\n&lt;collection property=\"students\" ofType=\"com.cskaoyan.vo.Student\"&gt;\n&lt;result column=\"sid\" property=\"id\"\/&gt;\n&lt;result column=\"sname\" property=\"name\"\/&gt;\n&lt;\/collection&gt;\n &lt;\/resultMap&gt;\n\n &lt;select id=\"selectByName\" resultMap=\"courseMap\"&gt;\n   select c.id, c.name, s.id as sid, s.name as sname\n   from cskaoyan_course c\n   LEFT JOIN cskaoyan_relation r ON c.id = r.c_id\nLEFT JOIN cskaoyan_student s ON s.id = r.stu_id\nwhere c.`name` = #{name}\n&lt;\/select&gt;\n&lt;\/mapper&gt;\n```<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u52a8\u6001SQL(!!!)<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u52a8\u6001SQL\u662fMybatis\u7ed9\u6211\u4eec\u63d0\u4f9b\u7684\u53c8\u4e00\u4e2a\u5f3a\u5927\u7684\u529f\u80fd\u3002\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u6839\u636e\u4f20\u5165\u7684\u6761\u4ef6\uff0c\u52a8\u6001\u7684\u53bb\u6539\u53d8SQL\u8bed\u53e5\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u5728\u6620\u5c04\u6587\u4ef6\u4e2d\u4f7f\u7528\u4e00\u4e9b\u4e0d\u540c\u7684\u6807\u7b7e\uff0c\u4f1a\u8ba9\u4e00\u4e2a\u65b9\u6cd5\u5bf9\u5e94\u7684SQL\u8bed\u53e5\uff08\u4e3b\u8981\u662finsert\u3001delete\u3001update\u3001select\u6807\u7b7e\u5185\u7684sql\u8bed\u53e5\uff09\u4ea7\u751f\u53d8\u5316<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u662f\u4e3a\u4e86\u8ba9\u4f60\u8fd9\u4e2a\u6807\u7b7e\u5185\u7684SQL\u66f4\u5f3a\u5927\uff0c\u66f4\u901a\u7528<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6570\u636e\u51c6\u5907<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\/*\n Navicat Premium Data Transfer\n\n Source Server         : stone61\n Source Server Type    : MySQL\n Source Server Version : 80300\n Source Host           : localhost:3306\n Source Schema         : clazz61\n\n Target Server Type    : MySQL\n Target Server Version : 80300\n File Encoding         : 65001\n\n Date: 08\/08\/2024 20:32:54\n*\/\n\nSET NAMES utf8mb4;\nSET FOREIGN_KEY_CHECKS = 0;\n\n-- ----------------------------\n-- Table structure for cskaoyan_phone\n-- ----------------------------\nDROP TABLE IF EXISTS `cskaoyan_phone`;\nCREATE TABLE `cskaoyan_phone`  (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `brand` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\n  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\n  `storage` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\n  `memory` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\n  `cpu` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,\n  `price` decimal(10, 2) NOT NULL,\n  PRIMARY KEY (`id`) USING BTREE\n) ENGINE = InnoDB AUTO_INCREMENT = 50 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;\n\n-- ----------------------------\n-- Records of cskaoyan_phone\n-- ----------------------------\nINSERT INTO `cskaoyan_phone` VALUES (1, '\u82f9\u679c', 'iPhone 15', '256GB', '8GB', 'A18 Bionic', 9999.99);\nINSERT INTO `cskaoyan_phone` VALUES (2, '\u4e09\u661f', 'Galaxy S23', '256GB', '12GB', 'Exynos 2300', 8999.99);\nINSERT INTO `cskaoyan_phone` VALUES (3, '\u5c0f\u7c73', 'Mi 13', '512GB', '16GB', 'Snapdragon 8 Gen 2', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (4, '\u534e\u4e3a', 'P60 Pro', '512GB', '12GB', 'Kirin 1000', 8888.88);\nINSERT INTO `cskaoyan_phone` VALUES (5, '\u4e00\u52a0', '10 Pro', '256GB', '12GB', 'Snapdragon 8 Gen 2', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (6, 'OPPO', 'Find X6 Pro', '512GB', '16GB', 'Snapdragon 8 Gen 2', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (7, 'vivo', 'X80 Pro+', '256GB', '12GB', 'Snapdragon 8 Gen 2', 7599.99);\nINSERT INTO `cskaoyan_phone` VALUES (8, '\u82f9\u679c', 'iPhone 14', '256GB', '6GB', 'A17 Bionic', 8999.99);\nINSERT INTO `cskaoyan_phone` VALUES (9, '\u4e09\u661f', 'Galaxy S22', '256GB', '12GB', 'Exynos 2200', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (10, '\u5c0f\u7c73', 'Mi 12', '512GB', '16GB', 'Snapdragon 8 Gen 1', 7599.99);\nINSERT INTO `cskaoyan_phone` VALUES (11, '\u534e\u4e3a', 'Mate 50 Pro', '512GB', '12GB', 'Kirin 9000s', 8999.99);\nINSERT INTO `cskaoyan_phone` VALUES (12, '\u4e00\u52a0', '9 Pro', '256GB', '12GB', 'Snapdragon 8 Gen 1', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (13, 'OPPO', 'Reno8 Pro', '512GB', '16GB', 'Snapdragon 8 Gen 1', 7599.99);\nINSERT INTO `cskaoyan_phone` VALUES (14, 'vivo', 'X70 Pro+', '256GB', '12GB', 'Snapdragon 8 Gen 1', 7299.99);\nINSERT INTO `cskaoyan_phone` VALUES (15, '\u82f9\u679c', 'iPhone 13', '256GB', '4GB', 'A15 Bionic', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (16, '\u4e09\u661f', 'Galaxy S21', '256GB', '8GB', 'Exynos 2100', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (17, '\u5c0f\u7c73', 'Mi 11', '512GB', '12GB', 'Snapdragon 888', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (18, '\u534e\u4e3a', 'P50 Pro', '512GB', '8GB', 'Kirin 9000', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (19, '\u4e00\u52a0', '8T Pro', '256GB', '12GB', 'Snapdragon 865+', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (20, 'OPPO', 'Find X5 Pro', '512GB', '16GB', 'Snapdragon 888', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (21, 'vivo', 'X60 Pro+', '256GB', '12GB', 'Snapdragon 888', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (22, '\u82f9\u679c', 'iPhone 12 Pro', '512GB', '6GB', 'A14 Bionic', 8999.99);\nINSERT INTO `cskaoyan_phone` VALUES (23, '\u4e09\u661f', 'Galaxy S20 Ultra', '512GB', '16GB', 'Exynos 990', 8999.99);\nINSERT INTO `cskaoyan_phone` VALUES (24, '\u5c0f\u7c73', 'Mi 10 Ultra', '512GB', '16GB', 'Snapdragon 865', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (25, '\u534e\u4e3a', 'Mate 40 Pro', '512GB', '12GB', 'Kirin 9000', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (26, '\u4e00\u52a0', '7T Pro', '256GB', '12GB', 'Snapdragon 855+', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (27, 'OPPO', 'Reno4 Pro', '512GB', '12GB', 'Snapdragon 765G', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (28, 'vivo', 'X50 Pro+', '256GB', '12GB', 'Snapdragon 865', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (29, '\u82f9\u679c', 'iPhone 11 Pro', '256GB', '4GB', 'A13 Bionic', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (30, '\u4e09\u661f', 'Galaxy Note 10+', '512GB', '12GB', 'Exynos 9825', 8999.99);\nINSERT INTO `cskaoyan_phone` VALUES (31, '\u5c0f\u7c73', 'Mi 9 Pro', '512GB', '12GB', 'Snapdragon 855+', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (32, '\u534e\u4e3a', 'P30 Pro', '256GB', '8GB', 'Kirin 980', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (33, '\u4e00\u52a0', '6T', '256GB', '8GB', 'Snapdragon 845', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (34, 'OPPO', 'Reno3 Pro', '256GB', '12GB', 'Snapdragon 765G', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (35, 'vivo', 'V20 Pro', '256GB', '12GB', 'Snapdragon 720G', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (36, '\u82f9\u679c', 'iPhone XS Max', '256GB', '4GB', 'A12 Bionic', 8999.99);\nINSERT INTO `cskaoyan_phone` VALUES (37, '\u4e09\u661f', 'Galaxy Note 9', '512GB', '8GB', 'Exynos 9810', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (38, '\u5c0f\u7c73', 'Mi 8 Pro', '256GB', '12GB', 'Snapdragon 845', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (39, '\u534e\u4e3a', 'Mate 20 Pro', '256GB', '6GB', 'Kirin 980', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (40, '\u4e00\u52a0', '6', '256GB', '12GB', 'Snapdragon 845', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (41, 'OPPO', 'Find X', '256GB', '8GB', 'Snapdragon 845', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (42, 'vivo', 'NEX S', '256GB', '8GB', 'Snapdragon 845', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (43, '\u82f9\u679c', 'iPhone X', '256GB', '3GB', 'A11 Bionic', 7999.99);\nINSERT INTO `cskaoyan_phone` VALUES (44, '\u4e09\u661f', 'Galaxy S10+', '256GB', '8GB', 'Exynos 9820', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (45, '\u5c0f\u7c73', 'Mi Mix 3', '256GB', '8GB', 'Snapdragon 845', 5999.99);\nINSERT INTO `cskaoyan_phone` VALUES (46, '\u534e\u4e3a', 'Mate 10 Pro', '256GB', '6GB', 'Kirin 970', 6999.99);\nINSERT INTO `cskaoyan_phone` VALUES (47, '\u4e00\u52a0', '5T', '256GB', '8GB', 'Snapdragon 835', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (48, 'OPPO', 'R15 Pro', '256GB', '8GB', 'Snapdragon 660', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (49, 'vivo', 'Xplay6', '256GB', '8GB', 'Snapdragon 821', 4999.99);\nINSERT INTO `cskaoyan_phone` VALUES (50, '\u82f9\u679c', 'iPhone 8', '64GB', '2GB', 'A11 Bionic', 5999.99);\n\nSET FOREIGN_KEY_CHECKS = 1;\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e1a\u52a1\u573a\u666f<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">1. \u6761\u4ef6\u67e5\u8be2 \uff08where\u3001if\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211;&nbsp;<code>`<\/code>sql<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8212; \u67e5\u8be2\u6240\u6709\u7684\u624b\u673a\u7684\u8bb0\u5f55<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">select * from cskaoyan_phone<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8212; \u5982\u679c\u589e\u52a0\u673a\u8eab\u5b58\u50a8\u7a7a\u95f4\u7684\u6761\u4ef6<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">select * from cskaoyan_phone where storage = &#8216;256GB&#8217;<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8212; \u7ee7\u7eed\u589e\u52a0\u6761\u4ef6CPU\u4e3aSnapdragon 845<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">select * from cskaoyan_phone where storage = &#8216;256GB&#8217; and cpu = &#8216;Snapdragon 845&#8217;<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8212; \u7ee7\u7eed\u589e\u52a0\u5185\u5b58<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">select * from cskaoyan_phone where storage = &#8216;256GB&#8217; and cpu = &#8216;Snapdragon 845&#8242; and memory = &#8217;12GB&#8217;<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n   - Mapper\u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5 \u53ef\u4ee5\u5982\u4f55\u5b9a\u4e49\n\n     - List\\&lt;Phone&gt; selectAll();\n     - List\\&lt;Phone&gt; selectByStorage(String storage);\n     - List\\&lt;Phone&gt; selectByStorageAndCPU(String storage,String cpu);\n     - List\\&lt;Phone&gt; selectByStorageAndCPUAndMemory(String storage,String cpu,String memory);\n\n     \u662f\u5426\u6709\u53ef\u80fd\u6211\u6839\u636e\u5b58\u50a8\u7a7a\u95f4\u548c\u5185\u5b58\u8fd9\u4e24\u4e2a\u6761\u4ef6\u67e5\u8be2\u5462\n\n     \u662f\u5426\u6709\u53ef\u80fd\u6211\u6839\u636eCPU\u5185\u5b58\u4e24\u4e2a\u6761\u4ef6\u67e5\u8be2\u5462\uff1f\n\n   - \u5982\u679c\u67094\u4e2a\u6761\u4ef6\u9009\u62e9\u5176\u4e2d\u7684\u4e24\u4e2a\u67e5\u8be2\uff0c\u53d8\u6210C42 = 6\u79cd\u60c5\u51b5\n\n   - \u5982\u679c\u4f7f\u7528\u6761\u4ef6\u67e5\u8be2 \u2192 \u53ea\u7528Mapper\u63a5\u53e3\u4e2d\u7684\u4e00\u4e2a\u65b9\u6cd5\u5c31\u80fd\u6ee1\u8db3\u6211\u4eec\u7684\u9700\u6c42\n\n     - List\\&lt;User&gt; selectByCondition(String storage,String cpu,String memory,String size)\n   \n2. \u6761\u4ef6\u66f4\u65b0\uff08\u63d2\u5165\uff09 \uff08if\u3001trim\u3001set\uff09\n\n   - \u66f4\u65b0\u5bf9\u8c61\u4e2d\u6210\u5458\u53d8\u91cf\u4e0d\u4e3a\u7a7a\u7684\u5217\n\n3. in\u8bed\u53e5 \uff08foreach\uff09\n\n   - -- \u8fd9\u6837\u7684\u53c2\u6570\u901a\u8fc7\u8f93\u5165\u6620\u5c04\u5982\u4f55\u4f20\u8fdb\u6765\n     SELECT * FROM `cskaoyan_user` where id in (1,2,3)\n\n4. \u6279\u91cf\u63d2\u5165 \uff08foreach\uff09\n\n   - \u4f20\u5165User\u7684\u591a\u6761\u8bb0\u5f55\uff08User[]\u3001List\\&lt;User&gt;\u3001Set\\&lt;User&gt;\u7b49\uff09\n   - \u60f3\u8981\u901a\u8fc7\u4e00\u6761sql\u8bed\u53e5\u4e00\u8d77\u63d2\u5165\u5230\u6570\u636e\u5e93\n   - insert into cskaoyan_user (username,password,age,birthday,create_date,mobile) values (?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?)\n\n\n\n## where(!!!)\n\nwhere\u8fd9\u4e2a\u6807\u7b7e\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u5728\u6700\u7ec8\u6267\u884c\u7684SQL\u4e2d\u81ea\u52a8\u751f\u6210where\u5173\u952e\u5b57\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/1, \u53ef\u4ee5\u81ea\u52a8\u62fc\u63a5where\u5173\u952e\u5b57 (\u4e00\u822c\u548cif\u914d\u5408\u4f7f\u7528)<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/2, \u53bb\u9664\u76f8\u90bb\u7684and\u6216\u8005\u662for\u5173\u952e\u5b57<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/3, \u5982\u679cwhere\u6807\u7b7e\u4e2d\u6ca1\u6709\u6761\u4ef6\u6ee1\u8db3\u7684\u65f6\u5019\uff08\u5982\u679cSQL\u7247\u6bb5\u9700\u8981\u62fc\u63a5\uff09\uff0c\u90a3\u4e48where\u6807\u7b7e\u4e0d\u4f1a\u7ed9\u6211\u4eec\u62fc\u63a5where\u5173\u952e\u5b57<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ \u6ce8\u610f\u4e00\u822cif(\u5de5\u4f5c\u7528\u5230\u66f4\u591a\u4e00\u4e9b),choose when otherwise(\u4e5f\u4f1a\u7528, \u7528\u5230\u76f8\u5bf9if\u5c11\u4e00\u4e9b),\u90fd\u8981\u6ce8\u610f, \u5c3d\u91cf\u5199\u5728where\u6807\u7b7e\u5185\u90e8, \u56e0\u4e3a, \u5982\u679c\u6839\u636e\u6761\u4ef6\u505a\u5904\u7406\u7684\u65f6\u5019, \u6ca1\u6709\u4efb\u4f55\u4e00\u4e2a\u6761\u4ef6\u6ee1\u8db3, \u5982\u679c\u53c8\u4f7f\u7528\u7684where\u6807\u7b7e(\u800c\u4e0d\u662f\u5199\u6b7b\u7684where\u5173\u952e\u5b57), \u90a3\u4e48\u6700\u7ec8\u6267\u884c\u7684sql\u4e0a\u4e0d\u4f1a\u751f\u6210where(\u907f\u514d\u51fa\u9519)<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ where\u6807\u7b7e<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ Preparing: select id, brand, name, storage, memory, cpu,price from cskaoyan_phone WHERE id = ?<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Phone selectByPrimaryKey(@Param(&#8220;id&#8221;) Integer id);<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&lt;!&#8211;\u5982\u679cwhere\u6807\u7b7e\u540e\u9762\u76f4\u63a5\u8ddf\u4e86and\u6216or\uff0c\u4f1a\u5728\u9884\u7f16\u8bd1\u8fc7\u7a0b\u88ab\u81ea\u52a8\u7701\u7565\u6389<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5982\u679cwhere\u6807\u7b7e\u91cc\u6ca1\u6709\u5185\u5bb9\uff0c\u4e0d\u4f1a\u62fc\u63a5where<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8211;&gt;<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">select id, brand, name, storage, memory, cpu,price from cskaoyan_phone<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">and id = #{id}<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n## if(!!!)\n\nJava\u4ee3\u7801\u4e2d\u7684if \u5565\u529f\u80fd\uff0c\u5982\u679cif\u4e2d\u7684\u6761\u4ef6\u4e3atrue\uff0c\u5219\u6267\u884cif\u4e2d\u7684\u4ee3\u7801\n\n\u6620\u5c04\u6587\u4ef6\u4e2d\u4f7f\u7528if\u6807\u7b7e\uff0ctest\u5c5e\u6027\u5b83\u7684\u503c\u4e3atrue\uff0c\u5219\u4f1a\u62fc\u63a5if\u6807\u7b7e\u5185\u7684SQL\u8bed\u53e5\uff1b\u5982\u679ctest\u5c5e\u6027\u503c\u4e3afalse\u5219\u4e0d\u4f1a\u62fc\u63a5\n\nif\u6807\u7b7e\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u53bb\u505a\u5224\u65ad\u662f\u5426\u6ee1\u8db3\u67d0\u4e2a\u6761\u4ef6\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u8f6c\u4e49\u5b57\u7b26(\u63a8\u8350) OGNL\u8868\u8fbe\u5f0f\uff08test\u8868\u8fbe\u5f0f\u540e\u9762\u7684\uff09<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ &gt; &amp;gt; gt<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ &lt; &amp;lt; lt<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ &gt;= &amp;gt;= gte<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ &lt;= &amp;lt;= lte<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ !=<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ ==<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ and<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ or<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ \u5728,\u5f15\u53f7\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u4e0d\u4f7f\u7528\u8f6c\u4e49\u5b57\u7b26\uff0c\u53ef\u4ee5\u4f7f\u7528OGNL\u8868\u8fbe\u5f0f\u7684\u5199\u6cd5<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">test\u5c5e\u6027\u4e2d\u5408\u6cd5\u7684\u5199\u6cd5<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u8f93\u5165\u6620\u5c04\u53ef\u4ee5\u5199\u7684\u503c\uff0c\u90a3\u4e48\u5728test\u5c5e\u6027\u4e2d\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6709\u591a\u4e2a\u6761\u4ef6 \u4f7f\u7528 and\u6216or\u6765\u8fde\u63a5<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n\u4ee3\u7801\u793a\u4f8b\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ if\u6807\u7b7e \u2192 \u5b8c\u6210\u6761\u4ef6\u67e5\u8be2<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">List selectByCondition(@Param(&#8220;brand&#8221;) String brand, @Param(&#8220;name&#8221;) String name, @Param(&#8220;storage&#8221;) String storage, @Param(&#8220;memory&#8221;) String memory, @Param(&#8220;cpu&#8221;) String cpu);<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&lt;!&#8211;\u601d\u8003\uff1a\u5982\u679cbrand\u4e3a\u7a7a\uff1f\u5982\u679c\u5168\u90e8\u53c2\u6570\u90fd\u4e3a\u7a7a&#8211;&gt;<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">select id, brand, name, storage, memory, cpu,price<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">from cskaoyan_phone<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">brand = #{brand}<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">and&nbsp;<code>name<\/code>&nbsp;= #{name}<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">and storage = #{storage}<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">and memory = #{memory}<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">and cpu = #{cpu}<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n\n\n## choose when otherwise\n\nchoose when otherwise\u5c31\u76f8\u5f53\u4e8eJava\u4e2d\u7684 if .... else....\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">if\u62fc\u63a5\u7684sql\u8bed\u53e5<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">else\u62fc\u63a5\u7684sql\u8bed\u53e5<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n\n\n\u548cwhere\u4e00\u8d77\u4f7f\u7528\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ choose-when-otherwise\u6807\u7b7e<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ \u5982\u679c\u4f20\u5165\u7684price\u4e3a6999\uff0c\u5219\u6267\u884c\u7684\u6761\u4ef6\u4e3a where price &amp;gt;= #{price}<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\/\/ \u5982\u679c\u4f20\u5165\u7684price\u4e0d\u4e3a6999\uff0c\u5219\u6267\u884c\u7684\u6761\u4ef6\u4e3a where price = #{price}<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">List selectByPrice(@Param(&#8220;price&#8221;) BigDecimal price);<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n```<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">select id, brand, name, storage, memory, cpu,price<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">from cskaoyan_phone<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">price &amp;gt;= #{price}<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">price = #{price}<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">@Test<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public void testChooseWhenOtherwise() {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PhoneMapper phoneMapper = MyBatisUtil.getSqlSession().getMapper(PhoneMapper.class);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/==&gt; Preparing: select id, brand, name, storage, memory, cpu,price from cskaoyan_phone WHERE price &gt;= ?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/==&gt; Parameters: 6999<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">List phoneList1 = phoneMapper.selectByPrice(BigDecimal.valueOf(6999));<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/==&gt; Preparing: select id, brand, name, storage, memory, cpu,price from cskaoyan_phone WHERE price = ?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/==&gt; Parameters: 7000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">List phoneList2 = phoneMapper.selectByMemory(BigDecimal.valueOf(7599.99));<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n## sql-include(!!!)\n\n\u6620\u5c04\u6587\u4ef6\u4e2d\u51fa\u73b0\u7684\u76f8\u540c\u7684SQL\u53ef\u4ee5\u505a\u4e00\u4e2a\u63d0\u53d6\n\n- \u628a\u76f8\u540c\u7684\u90e8\u5206\u653e\u5728SQL\u6807\u7b7e\u4e2d\uff0c\u5e76\u4e14\u5bf9\u5916\u63d0\u4f9b\u4e00\u4e2aid\uff0c\u8fd9\u6bb5SQL\u4e5f\u53ef\u4ee5\u79f0\u4e4b\u4e3aSQL\u7247\u6bb5\n- \u4f7f\u7528include\u6807\u7b7e\u8fdb\u884c\u5f15\u7528\uff0crefid\u5c5e\u6027\u503c\u4e3asql\u6807\u7b7e\u7684id\u5c5e\u6027\u503c\n\n&gt; ```java\n&gt; \/\/ sql\u6807\u7b7e\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u628a\u516c\u5171\u7684sql\u63d0\u53d6\u51fa\u6765\n&gt; \/\/ include\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u5f15\u5165\u516c\u5171\u7684sql\u7247\u6bb5\u3002\n&gt; ```\n&gt;\n&gt; \u63d0\u53d6\n&gt;\n&gt; ```xml\n&gt; &lt;sql id=\"base_sql\"&gt;\n&gt;   select * from `cskaoyan_phone`\n&gt; &lt;\/sql&gt;\n&gt; ```\n&gt;\n&gt; \u5f15\u5165\n&gt;\n&gt; ```xml\n&gt; &lt;select id=\"selectByPrimaryKey\" resultType=\"com.cskaoyan.bean.Phone\"&gt;\n&gt;   &lt;include refid=\"base_sql\" \/&gt; &lt;!-- \u5f15\u5165 --&gt;\n&gt;   &lt;where&gt;\n&gt;     id=#{id}\n&gt;   &lt;\/where&gt;\n&gt; &lt;\/select&gt;\n&gt; ```\n&gt;\n&gt; ```xml\n&gt; &lt;select id=\"selectByCondition\" resultType=\"com.cskaoyan.bean.Phone\"&gt;\n&gt;   &lt;include refid=\"base_sql\" \/&gt;  &lt;!-- \u5f15\u5165 --&gt;\n&gt;   &lt;where&gt;\n&gt;     &lt;if test=\"brand != null and brand != ''\"&gt;\n&gt;       brand = #{brand}\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"name != null and name != ''\"&gt;\n&gt;       and `name` = #{name}\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"storage != null and storage != ''\"&gt;\n&gt;       and storage = #{storage}\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"memory != null and memory != ''\"&gt;\n&gt;       and memory = #{memory}\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"cpu != null and cpu != ''\"&gt;\n&gt;       and cpu = #{cpu}\n&gt;     &lt;\/if&gt;\n&gt;   &lt;\/where&gt;\n&gt; &lt;\/select&gt;\n&gt; ```\n&gt;\n&gt; ```java\n&gt; \/\/ \u4f18\u70b9\uff1a\u53ef\u4ee5\u63d0\u53d6\u516c\u5171\u7684sql\u7247\u6bb5\uff0c\u51cf\u5c11\u7f16\u7801\u91cf\n&gt; \/\/ \u7f3a\u70b9\uff1a\u7528\u4e86sql-include \u4e4b\u540e\uff0cSQL\u8bed\u53e5\u7684\u53ef\u8bfb\u6027\u53d8\u5dee\u4e86\n&gt; ```\n\n&lt;span style='color:red;background:yellow;'&gt;**sql-include \u6807\u7b7e\u6211\u4eec\u4e00\u822c\u7528\u6765\u63d0\u53d6 \u5217\u540d\u3002**&lt;\/span&gt;\n\n&gt; \u63d0\u53d6\n&gt;\n&gt; ```xml\n&gt; &lt;sql id=\"base_sql\"&gt;\n&gt;     id, brand, name, storage, memory, cpu,price\n&gt; &lt;\/sql&gt;\n&gt; ```\n&gt;\n&gt; \u5f15\u5165\n&gt;\n&gt; ```xml\n&gt; &lt;select id=\"selectByPrimaryKey\" resultType=\"com.cskaoyan.bean.Phone\"&gt;\n&gt;     select\n&gt;     &lt;include refid=\"base_sql\" \/&gt;\n&gt;     from `cskaoyan_phone`\n&gt;     &lt;where&gt;\n&gt;         id=#{id}\n&gt;     &lt;\/where&gt;\n&gt; &lt;\/select&gt;\n&gt; ```\n&gt;\n&gt; \u597d\u5904\u5206\u6790\n&gt;\n&gt; ```java\n&gt; \/\/ \u907f\u514d\u5199select *\n&gt; \/\/ \u907f\u514d\u6d6a\u8d39\u7f51\u7edc\u8d44\u6e90\n&gt; \/\/ \u4e0d\u7834\u574fSQL\u8bed\u53e5\u7684\u53ef\u8bfb\u6027\n&gt; ```\n\n\n\n## trim\n\ntrim\u6807\u7b7e\u91cc\u9762\u5199\u7684\u662fSQL\u8bed\u53e5\uff08\u5305\u542b\u6807\u7b7e\uff09\uff0c\u5728\u5176\u5185\u5bb9\u7684\u6700\u524d\u9762\u548c\u6700\u540e\u9762\u53ef\u4ee5\u589e\u52a0\u6307\u5b9a\u5b57\u7b26\uff0c\u5728\u5176\u5185\u5bb9\u6700\u524d\u9762\u548c\u6700\u540e\u9762\u4e5f\u53ef\u4ee5\u53bb\u9664\u6307\u5b9a\u5b57\u7b26\n\n- prefix \u524d\u7f00\n- suffix \u540e\u7f00\n- prefixOverrides\n- suffixOverrides\n\n\n\n&gt;trim\u6807\u7b7e\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u52a8\u6001\u7684\u53bb\u589e\u52a0\u6307\u5b9a\u7684\u5b57\u7b26\uff0c\u6216\u8005\u662f\u5220\u9664\u6307\u5b9a\u7684\u5b57\u7b26\u3002\n&gt;\n&gt;````java\n&gt;\/\/ \u6ca1\u6709\u589e\u52a0@Param\u6ce8\u89e3 #{}\u53ef\u4ee5\u7528\u5565 \u2192 \u6210\u5458\u53d8\u91cf\u540d\n&gt;int updateByPrimaryKey(Phone record);\n&gt;int updateByPrimaryKeySelective(Phone record);\n&gt;````\n&gt;\n&gt;```xml\n&gt;&lt;!--\n&gt;prefix: \u589e\u52a0\u6307\u5b9a\u7684\u524d\u7f00\n&gt;suffix: \u589e\u52a0\u6307\u5b9a\u7684\u540e\u7f00\n&gt;prefixOverrides: \u5220\u9664\u6307\u5b9a\u7684\u524d\u7f00\n&gt;suffixOverrides: \u5220\u9664\u6307\u5b9a\u7684\u540e\u7f00\n&gt;--&gt;\n&gt;```\n&gt;\n&gt;```xml\n&gt;&lt;mapper namespace=\"com.cskaoyan.mapper.PhoneMapper\"&gt;\n&gt;  &lt;update id=\"updateByPrimaryKey\"&gt;\n&gt;    update cskaoyan_phone\n&gt;    set brand = #{brand},\n&gt;      `name` = #{name},\n&gt;      `storage` = #{storage},\n&gt;      memory = #{memory},\n&gt;      cpu = #{cpu},\n&gt;      price = #{price}\n&gt;    where id = #{id}\n&gt;  &lt;\/update&gt;\n&gt;  &lt;update id=\"updateByPrimaryKeySelective\"&gt;\n&gt;    update cskaoyan_phone set\n&gt;    &lt;trim suffixOverrides=\",\"&gt;\n&gt;      &lt;if test=\"brand != null\"&gt;\n&gt;        brand = #{brand},\n&gt;      &lt;\/if&gt;\n&gt;      &lt;if test=\"name != null\"&gt;\n&gt;        `name` = #{name},\n&gt;      &lt;\/if&gt;\n&gt;      &lt;if test=\"storage != null\"&gt;\n&gt;        `storage` = #{storage},\n&gt;      &lt;\/if&gt;\n&gt;      &lt;if test=\"memory != null\"&gt;\n&gt;        memory = #{memory},\n&gt;      &lt;\/if&gt;\n&gt;      &lt;if test=\"cpu != null\"&gt;\n&gt;        cpu = #{cpu},\n&gt;      &lt;\/if&gt;\n&gt;      &lt;if test=\"price != null\"&gt;\n&gt;        price = #{price},\n&gt;      &lt;\/if&gt;\n&gt;    &lt;\/trim&gt;\n&gt;    where id = #{id}\n&gt;  &lt;\/update&gt;\n&gt;&lt;\/mapper&gt;\n&gt;```\n&gt;\n&gt;```xml\n&gt;\/\/ \u4e5f\u53ef\u4ee5\u5c06set\u5199\u5230trim\u6807\u7b7e\u4e2d\n&gt;update cskaoyan_user\n&gt;   &lt;trim prefix=\"set\" suffixOverrides=\",\"&gt;\n&gt;```\n\n\n\n## set(!!!)\n\n&gt; \\&lt;set&gt; \u5c31\u76f8\u5f53\u4e8e \\&lt;trim prefix=\"SET\" suffixOverrides=\",\"&gt;  \u8fd9\u4e2a\u914d\u7f6e\uff0c\u548c\u8fd9\u4e2a\u662f\u7b49\u4ef7\u7684\u3002\n&gt;\n&gt; ````java\n&gt; \/\/ \u53bb\u9664set\u6807\u7b7e\u4e2d\u7684\u6700\u540e\u4e00\u4e2a \",\"\n&gt; \/\/ \u62fc\u63a5set\u5173\u952e\u5b57\n&gt; ````\n&gt;\n&gt; ```java\n&gt; Phone phone = new Phone();\n&gt; phone.setId(1);\n&gt; phone.setPrice(BigDecimal.valueOf(10000));\n&gt; phoneMapper.updateByPrimaryKeySelective(phone);\n&gt; ```\n&gt;\n&gt; ```java\n&gt; int updateByPrimaryKeySelective(Phone record);\n&gt; ```\n&gt;\n&gt; ```xml\n&gt; &lt;update id=\"updateByPrimaryKeySelective\"&gt;\n&gt;   update cskaoyan_phone\n&gt;   &lt;set&gt;\n&gt;     &lt;if test=\"brand != null\"&gt;\n&gt;       brand = #{brand},\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"name != null\"&gt;\n&gt;       `name` = #{name},\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"storage != null\"&gt;\n&gt;       `storage` = #{storage},\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"memory != null\"&gt;\n&gt;       memory = #{memory},\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"cpu != null\"&gt;\n&gt;       cpu = #{cpu},\n&gt;     &lt;\/if&gt;\n&gt;     &lt;if test=\"price != null\"&gt;\n&gt;       price = #{price},\n&gt;     &lt;\/if&gt;\n&gt;   &lt;\/set&gt;\n&gt;   where id = #{id}\n&gt; &lt;\/update&gt;\n&gt; ```\n\n\n\n## foreach(!!!)\n\n\u505a\u7684\u662f\u904d\u5386\uff0c\u5728\u904d\u5386\u7684\u8fc7\u7a0b\u4e2d\uff0c\u62fc\u63a5foreach\u6807\u7b7e\u4e2d\u7684\u5185\u5bb9\n\n\u505a\u7684\u662f\u6570\u7ec4\u548c\u96c6\u5408\u7c7b\u7684\u904d\u5386\n\n&gt; Foreach\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u53bb\u5faa\u73af\u5904\u7406SQL\u8bed\u53e5\u3002\n\nforeach\u6807\u7b7e\u4ee5\u53ca\u91cc\u9762\u7684\u5c5e\u6027\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f1a\u88ab\u904d\u5386\u62fc\u63a5\u7684\u5185\u5bb9<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n- collection\u5c5e\u6027\uff1a\n  - \u5982\u679cMapper\u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5\u7684\u5f62\u53c2\u4f7f\u7528\u4e86@Param\uff0c\u7528\u7684\u5c31\u662f@Param\u6ce8\u89e3\u7684\u5c5e\u6027\u503c\n  - \u5982\u679c\u6ca1\u6709\u4f7f\u7528\u6ce8\u89e3\uff1a\u5982\u679c\u662f\u6570\u7ec4\uff0c\u5219\u5199array\uff1b\u5982\u679c\u662flist\u5c31\u5199list\n- item\u5c5e\u6027\uff1a\u81ea\u5df1\u5b9a\u4e49\uff0c\u5728foreach\u6807\u7b7e\u5185\u53ef\u4ee5\u4f7f\u7528#{}\u65b9\u5f0f\u4f7f\u7528\u8be5\u503c\n- open\u3001close\u5c5e\u6027\uff1a\u6700\u524d\u548c\u6700\u540e\u53bb\u62fc\u63a5\u5b57\u7b26\uff0c\u62fc\u63a5**\u4e00\u6b21**\n- separator\u5c5e\u6027\uff1a\u6bcf\u4e24\u4e2a\u904d\u5386\u7684\u5185\u5bb9\u4e4b\u95f4\u7684\u8865\u5145\u5b57\u7b26\uff1b\u62fc\u63a5\u6b21\u6570\u4e3an-1\n\n\n\n### \u6279\u91cf\u63d2\u5165\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; \u54ea\u4e9b\u5185\u5bb9\u51fa\u73b0\u4e86n\u6b21 \u2192 foreach\u6807\u7b7e\u4e2d \u2192 (?,?,?,?,?,?)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; \u54ea\u4e9b\u5185\u5bb9\u51fa\u73b0\u4e86n-1\u6b21 \u2192 separator\u5c5e\u6027\u4e2d \u2192 ,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; \u54ea\u4e9b\u5185\u5bb9\u51fa\u73b0\u4e861\u6b21 \u2192 open\u3001close\u5c5e\u6027\u4e2d \u2192 \u65e0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">insert into cskaoyan_user (username,password,age,birthday,create_date,mobile) values (?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n\n\n&gt; Foreach\u5728\u63d2\u5165\u7684\u4f7f\u7528\n&gt;\n&gt; ```java\n&gt; \/\/ \u5f53\u4e2a\u65b9\u6cd5\u4e2d\u4f20\u5165\u7684\u53c2\u6570\u6ca1\u6709\u6ce8\u89e3\u7684\u65f6\u5019\uff0c\u5047\u5982\u4f20\u5165\u7684List\uff0c\u90a3\u4e48\u5c31\u53ef\u4ee5\u4f7f\u7528 list\uff0c\u5047\u5982\u4f20\u5165\u7684\u662f\u6570\u7ec4\uff0c\u90a3\u4e48\u5c31\u53ef\u4ee5\u4f7f\u7528 array\n&gt; \/\/ \u5f53\u65b9\u6cd5\u4e2d\u4f20\u5165\u7684\u53c2\u6570\u6709\u6ce8\u89e3\u7684\u65f6\u5019\uff0ccollection\u91cc\u9762\u5fc5\u987b\u5199\u6ce8\u89e3\u7684\u503c\n&gt; ```\n&gt;\n&gt; **List\u7c7b\u578b\u53c2\u6570**\n&gt;\n&gt; \u6ca1\u6709\u6ce8\u89e3,  foreach\u7684\u5faa\u73af\u4ece\u63d2\u5165\u7684\u65f6\u5019,  \u8981\u6c42foreach\u6807\u7b7e\u7684 collection\u53c2\u6570, \u662fcollection  (\u5982\u679cList\u5bf9\u8c61\u5efa\u8bae\u5199list)\n&gt;\n&gt; ```java\n&gt; \/**\n&gt;      * \u4f7f\u7528foreach\u505a\u6279\u91cf\u63d2\u5165\n&gt;      *\/\n&gt; @Test\n&gt; public void testBatchInsert() {\n&gt;   User user1 = new User(null,\"\u5f20\u4e09\",\"123456\",25,new Date(),new Date(),\"110\");\n&gt;   User user2 = new User(null,\"\u674e\u56db\",\"123456\",26,new Date(),new Date(),\"110\");\n&gt;   User user3 = new User(null,\"\u738b\u4e94\",\"123456\",27,new Date(),new Date(),\"110\");\n&gt;   List&lt;User&gt; users = Arrays.asList(user1, user2, user3);\n&gt; \n&gt;   UserMapper userMapper = MyBatisUtil.getMapper(UserMapper.class);\n&gt;   int insert = userMapper.insertUsers(users);\n&gt;   \/\/==&gt;  Preparing: insert into cskaoyan_user (username,password,age,birthday,create_date,mobile)\n&gt;   \/\/ values (?,?,?,?,?,?) , (?,?,?,?,?,?) , (?,?,?,?,?,?)\n&gt; }\n&gt; ```\n&gt;\n&gt; ```java\n&gt; int insertUsers1(List&lt;User&gt; users);\n&gt; ```\n&gt;\n&gt; ```xml\n&gt; &lt;!--\n&gt;       collection\uff1a\u4f20\u5165\u53c2\u6570\u7684\u540d\u5b57\uff0c\u53c2\u6570\u6ca1\u6709\u6dfb\u52a0\u6ce8\u89e3\u7684\u65f6\u5019\uff0c\u4f7f\u7528 collection | list\n&gt;       separator\uff1a\u5faa\u73af\u7684\u65f6\u5019\uff0c\u4ee5\u4ec0\u4e48\u5b57\u7b26\u5206\u5272\u5f00\n&gt;       open\uff1a\u5728\u5faa\u73af\u5f00\u59cb\u7684\u65f6\u5019\uff0c\u6dfb\u52a0\u6307\u5b9a\u7684\u5b57\u7b26\n&gt;       close\uff1a\u5728\u5faa\u73af\u7ed3\u675f\u7684\u65f6\u5019\uff0c\u6dfb\u52a0\u6307\u5b9a\u7684\u5b57\u7b26\n&gt;       item\uff1a\u5faa\u73af\u4e2d\u7684\u5143\u7d20\u540d \u76f8\u5f53\u4e8e for(int i=0;i&lt;100;i++) {}  \u4e2d\u7684 i\n&gt;       index: \u5143\u7d20\u7684\u4e0b\u6807 --&gt;\n&gt; \n&gt; &lt;insert id=\"insertUsers1\"&gt;\n&gt;   insert into cskaoyan_user (username,password,age,birthday,create_date,mobile)\n&gt;   values\n&gt;   &lt;!--(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?)--&gt;\n&gt;   &lt;foreach collection=\"list\" item=\"user\" separator=\",\"&gt;\n&gt;     (#{user.username},#{user.password},#{user.age},#{user.birthday},#{user.createDate},#{user.mobile})\n&gt;   &lt;\/foreach&gt;\n&gt; &lt;\/insert&gt;\n&gt; ```\n&gt;\n&gt; **\u6570\u7ec4\u7c7b\u578b\u53c2\u6570**\n&gt;\n&gt; ```java\n&gt;int insertUsers2(User[] users);\n&gt; ```\n&gt; \n&gt; ```xml\n&gt; &lt;insert id=\"insertUsers2\"&gt;\n&gt;   insert into cskaoyan_user (username,password,age,birthday,create_date,mobile)\n&gt;   values\n&gt;   &lt;!--(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?)--&gt;\n&gt;   &lt;foreach collection=\"array\" item=\"user\" separator=\",\"&gt;\n&gt;    (#{user.username},#{user.password},#{user.age},#{user.birthday},#{user.createDate},#{user.mobile})\n&gt;   &lt;\/foreach&gt;\n&gt; &lt;\/insert&gt;\n&gt; ```\n&gt;\n&gt; **\u6dfb\u52a0\u6ce8\u89e3**\n&gt; \n&gt; \u5982\u679c\u5728\u4f7f\u7528foreach\u7684\u5faa\u73af\u4ece\u63d2\u5165\u7684\u65f6\u5019,  collection\u5c5e\u6027\u503c \u5fc5\u987b\u662f`\u6ce8\u89e3\u540d`\n&gt; \n&gt; ```java\n&gt; int insertUsers3(@Param(\"users\") List&lt;User&gt; users);\n&gt; int insertUsers4(@Param(\"users\") User[] users);\n&gt; ```\n&gt;\n&gt; ```xml\n&gt;&lt;!--insertUsers4\u9664\u4e86id\u4e0d\u540c\uff0c\u4e5f\u662f\u4e00\u6837\u7684\u5199\u6cd5--&gt;\n&gt; &lt;insert id=\"insertUsers3\"&gt;\n&gt;  insert into cskaoyan_user (username,password,age,birthday,create_date,mobile)\n&gt;   values\n&gt;   &lt;!--(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?),(?,?,?,?,?,?)--&gt;\n&gt;   &lt;foreach collection=\"users\" item=\"user\" separator=\",\"&gt;\n&gt;     (#{user.username},#{user.password},#{user.age},#{user.birthday},#{user.createDate},#{user.mobile})\n&gt;   &lt;\/foreach&gt;\n&gt; &lt;\/insert&gt;\n&gt; ```\n\n### \u4f7f\u7528in\u67e5\u8be2\n\n&gt;Foreach\u5728\u67e5\u8be2\u65f6\u5019\u7684\u4f7f\u7528: \n&gt;\n&gt;\u6ce8\u610f: foreach collection\u5728\u4e0d\u4f7f\u7528\u6ce8\u89e3\u60c5\u51b5\u4e0b, \u9ed8\u8ba4\u96c6\u5408\u7c7b\u4f7f\u7528collection (List\u5efa\u8bae\u4f7f\u7528List),  \u6570\u7ec4\u4f7f\u7528array\n&gt;\n&gt;\u5982\u679c\u53c2\u6570\u4f7f\u7528\u4e86\u6ce8\u89e3, foreach \u6807\u7b7e\u7684collection\u5c5e\u6027\u4f7f\u7528\u6ce8\u89e3\u540d\n&gt;\n&gt;```java\n&gt;@Test\n&gt;public void testForeachIn() {\n&gt;  UserMapper userMapper = MyBatisUtil.getMapper(UserMapper.class);\n&gt;  List&lt;Integer&gt; ids = Arrays.asList(1, 2, 3);\n&gt;  List&lt;User&gt; users = userMapper.selectByIds3(ids);\n&gt;  System.out.println(\"users = \" + users);\n&gt;  \/\/==&gt;  Preparing: select id, username, password, age, birthday, create_date, mobile from cskaoyan_user WHERE id in ( ? , ? , ? )\n&gt;  \/\/==&gt; Parameters: 1(Integer), 2(Integer), 3(Integer)\n&gt;}\n&gt;```\n&gt;\n&gt;```java\n&gt;\/\/ \u4ee5\u4e0b\u51e0\u79cd\u5199\u6cd5\uff0ccollection\u5c5e\u6027\u503c\u5e94\u8be5\u5982\u4f55\u5199\n&gt;\/\/ \u65e0\u6ce8\u89e3\u6570\u7ec4 \u2192 collection=\"array\"\n&gt;List&lt;User&gt; selectByIds1(Integer[] ids);\n&gt;\/\/ \u6709\u6ce8\u89e3\u6570\u7ec4 \u2192 collection=\"ids\"\n&gt;List&lt;User&gt; selectByIds2(@Param(\"ids\") Integer[] ids);\n&gt;\/\/ \u65e0\u6ce8\u89e3List \u2192 collection=\"list\"\n&gt;List&lt;User&gt; selectByIds3(List&lt;Integer&gt; ids);\n&gt;\/\/ \u6709\u6ce8\u89e3List \u2192 collection=\"ids\"\n&gt;List&lt;User&gt; selectByIds4(@Param(\"ids\") List&lt;Integer&gt; ids);\n&gt;```\n&gt;\n&gt;```xml\n&gt;&lt;sql id=\"BASE_USER_Select\"&gt;\n&gt;      select id, username, password, age, birthday, create_date, mobile from cskaoyan_user\n&gt;&lt;\/sql&gt;\n&gt;&lt;select id=\"selectByIds1\" resultType=\"com.cskaoyan.demo1.bean.User\"&gt;\n&gt;      &lt;include refid=\"BASE_USER_Select\"\/&gt;\n&gt;      &lt;where&gt;\n&gt;         &lt;!--\n&gt;                ?\u51fa\u73b0n\u6b21 \u2192 foreach\u6807\u7b7e\u4e2d\u7684\u5185\u5bb9\n&gt;                ,\u51fa\u73b0n-1\u6b21 \u2192 separator\u4e2d\u7684\u5185\u5bb9\n&gt;                ()\u90fd\u51fa\u73b0\u4e00\u6b21 \u2192 open,close\n&gt;            --&gt;\n&gt;         id in\n&gt;         &lt;foreach collection=\"array\" item=\"id\" separator=\",\" open=\"(\" close=\")\"&gt;\n&gt;           #{id}\n&gt;         &lt;\/foreach&gt;\n&gt;      &lt;\/where&gt;\n&gt;&lt;\/select&gt;\n&gt;&lt;select id=\"selectByIds2\" resultType=\"com.cskaoyan.demo1.bean.User\"&gt;\n&gt;      &lt;include refid=\"BASE_USER_Select\"\/&gt;\n&gt;      &lt;where&gt;\n&gt;         &lt;!--\n&gt;                ?\u51fa\u73b0n\u6b21 \u2192 foreach\u6807\u7b7e\u4e2d\u7684\u5185\u5bb9\n&gt;                ,\u51fa\u73b0n-1\u6b21 \u2192 separator\u4e2d\u7684\u5185\u5bb9\n&gt;                ()\u90fd\u51fa\u73b0\u4e00\u6b21 \u2192 open,close\n&gt;            --&gt;\n&gt;         id in\n&gt;         &lt;foreach collection=\"ids\" item=\"id\" separator=\",\" open=\"(\" close=\")\"&gt;\n&gt;           #{id}\n&gt;         &lt;\/foreach&gt;\n&gt;      &lt;\/where&gt;\n&gt;&lt;\/select&gt;\n&gt;&lt;select id=\"selectByIds3\" resultType=\"com.cskaoyan.demo1.bean.User\"&gt;\n&gt;      &lt;include refid=\"BASE_USER_Select\"\/&gt;\n&gt;      &lt;where&gt;\n&gt;         &lt;!--\n&gt;                ?\u51fa\u73b0n\u6b21 \u2192 foreach\u6807\u7b7e\u4e2d\u7684\u5185\u5bb9\n&gt;                ,\u51fa\u73b0n-1\u6b21 \u2192 separator\u4e2d\u7684\u5185\u5bb9\n&gt;                ()\u90fd\u51fa\u73b0\u4e00\u6b21 \u2192 open,close\n&gt;            --&gt;\n&gt;         id in\n&gt;         &lt;foreach collection=\"list\" item=\"id\" separator=\",\" open=\"(\" close=\")\"&gt;\n&gt;           #{id}\n&gt;         &lt;\/foreach&gt;\n&gt;      &lt;\/where&gt;\n&gt;&lt;\/select&gt;\n&gt;&lt;select id=\"selectByIds4\" resultType=\"com.cskaoyan.demo1.bean.User\"&gt;\n&gt;      &lt;include refid=\"BASE_USER_Select\"\/&gt;\n&gt;      &lt;where&gt;\n&gt;         &lt;!--\n&gt;                ?\u51fa\u73b0n\u6b21 \u2192 foreach\u6807\u7b7e\u4e2d\u7684\u5185\u5bb9\n&gt;                ,\u51fa\u73b0n-1\u6b21 \u2192 separator\u4e2d\u7684\u5185\u5bb9\n&gt;                ()\u90fd\u51fa\u73b0\u4e00\u6b21 \u2192 open,close\n&gt;            --&gt;\n&gt;         id in\n&gt;         &lt;foreach collection=\"ids\" item=\"id\" separator=\",\" open=\"(\" close=\")\"&gt;\n&gt;           #{id}\n&gt;         &lt;\/foreach&gt;\n&gt;      &lt;\/where&gt;\n&gt;&lt;\/select&gt;\n&gt;```\n\n\n\n## selectkey\n\n\u989d\u5916\u6267\u884c\u4e00\u4e2a\u67e5\u8be2\uff0c\u5e76\u4e14\u5c06\u67e5\u8be2\u7684\u7ed3\u679c\u7ed9\u5230\u8f93\u5165\u6620\u5c04\u4f20\u5165\u7684\u53c2\u6570\n\n&gt; \u8fd9\u4e2a\u6807\u7b7e\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u5728\u6267\u884c\u76ee\u6807SQL\u8bed\u53e5\u4e4b\u524d\u6216\u8005\u662f\u4e4b\u540e\u6267\u884c\u4e00\u6761\u989d\u5916\u7684SQL\u8bed\u53e5\u3002\n&gt;\n&gt; **AFTER\u64cd\u4f5c**\n&gt;\n&gt; ```java\n&gt; @Test\n&gt; public void testInsert() {\n&gt;   UserMapper userMapper = MyBatisUtil.getMapper(UserMapper.class);\n&gt;   User user = new User(null,\"\u8d75\u516d\",\"123456\",25,new Date(),new Date(),\"110\");\n&gt;   int insert = userMapper.insertUser(user);\n&gt;   System.out.println(\"id = \" + user.getId());\n&gt;   \/\/==&gt;  Preparing: insert into cskaoyan_user (username,password,age,birthday,create_date,mobile) values (?,?,?,?,?,?)\n&gt;   \/\/==&gt; Parameters: \u8d75\u516d(String), 123456(String), 25(Integer), 2023-03-28 14:34:30.268(Timestamp), 2023-03-28 14:34:30.268(Timestamp), 110(String)\n&gt;   \/\/&lt;==    Updates: 1\n&gt;   \/\/==&gt;  Preparing: select LAST_INSERT_ID() as lastid\n&gt;   \/\/==&gt; Parameters:\n&gt;   \/\/&lt;==    Columns: lastid\n&gt;   \/\/&lt;==        Row: 73\n&gt;   \/\/&lt;==      Total: 1\n&gt;   \/\/id = 73\n&gt; }\n&gt; ```\n&gt;\n&gt; ```java\n&gt; int insertUser(@Param(\"user\") User user);\n&gt; ```\n&gt;\n&gt; ```xml\n&gt; &lt;!--keyColumn:\u67e5\u8be2\u7ed3\u679c\u96c6\u4e2d\u7684\u5217\u540d\n&gt;         keyProperty\uff1a\u5c01\u88c5\u7ed9\u8c01 \u2192 \u548c\u8f93\u5165\u6620\u5c04\u53ef\u5199\u7684\u503c\u6709\u5173\u7cfb \u2192 user  user.xxx\n&gt;         resultType\uff1a\u67e5\u8be2\u7ed3\u679c\u7684\u7c7b\u578b\n&gt;         \u6807\u7b7e\u4e2d\uff1a\u989d\u5916\u6267\u884c\u7684sql\u8bed\u53e5\n&gt;         order\uff1a\u987a\u5e8f\uff0c\u76f8\u8f83\u4e8e\u5f53\u524d\u7684sql\u8bed\u53e5\uff0c\u989d\u5916\u7684\u67e5\u8be2\u7684\u76f8\u5bf9\u987a\u5e8f\n&gt;     --&gt;\n&gt; &lt;insert id=\"insertUser\"&gt;\n&gt;     &lt;selectKey keyColumn=\"lastid\" keyProperty=\"user.id\" resultType=\"integer\" order=\"AFTER\"&gt;\n&gt;        select LAST_INSERT_ID() as lastid\n&gt;     &lt;\/selectKey&gt;\n&gt;     insert into cskaoyan_user (username,password,age,birthday,create_date,mobile)\n&gt;     values\n&gt;     (#{user.username},#{user.password},#{user.age},#{user.birthday},#{user.createDate},#{user.mobile})\n&gt; \n&gt;     &lt;!--\u6267\u884c\u5b8cinsert\u4e4b\u540e\uff0c\u6267\u884cselect LAST_INSERT_ID(); \u8fd9\u4e2a\u67e5\u8be2\u662f\u6709\u7ed3\u679c\u7684\uff0c\u8fd9\u4e2a\u7ed3\u679c\u8981\u7ed9\u5230userid--&gt;\n&gt; &lt;\/insert&gt;\n&gt; ```\n&gt;\n&gt; **BEFORE:\u64cd\u4f5c**\n&gt;\n&gt; \u4e00\u822c\u4e0d\u9700\u8981\u4f7f\u7528BEFORE\u64cd\u4f5c\uff0c\u5b9e\u9645\u5f00\u53d1\u8fc7\u7a0b\u4e2dAFTER\u64cd\u4f5c\u4f7f\u7528\u7684\u4e5f\u662f\u6bd4\u8f83\u5c11\u7684\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4e0b\u9762\u7684\u65b9\u5f0f\u6765\u83b7\u5f97\u81ea\u589e\u7684\u4e3b\u952e\n\n\n\n## useGeneratedKeys(!!!)\n\n\u9700\u8981\u4f7f\u7528\u5230\u4e24\u4e2a\u5c5e\u6027\uff1auseGeneratedKeys\u3001keyProperty\n\n&gt;useGeneratedKeys:  \u83b7\u53d6insert\/update\u64cd\u4f5c\u6570\u636e\u7684\u4e3b\u952e\n&gt;\n&gt;```java\n&gt;\u5f00\u542f\u914d\u7f6e\uff1auseGeneratedKeys=\"true\" \n&gt;\u6620\u5c04\u5230\u5bf9\u5e94\u7684\u53c2\u6570\u4e2d\uff1akeyProperty=\"order.id\"\n&gt;```\n&gt;\n&gt;```java\n&gt;@Test\n&gt;public void testInsert2() {\n&gt;    UserMapper userMapper = MyBatisUtil.getMapper(UserMapper.class);\n&gt;    User user = new User(null,\"\u5b59\u4e03\",\"123456\",25,new Date(),new Date(),\"110\");\n&gt;    int insert = userMapper.insertUser2(user);\n&gt;    System.out.println(\"id = \" + user.getId());\n&gt;}\n&gt;```\n&gt;\n&gt;```java\n&gt;int insertUser2(@Param(\"user\") User user);\n&gt;```\n&gt;\n&gt;    ```xml\n&gt;     &lt;insert id=\"insertUser2\" useGeneratedKeys=\"true\" keyProperty=\"user.id\"&gt;\n&gt;       insert into cskaoyan_user (username,password,age,birthday,create_date,mobile)\n&gt;       values\n&gt;       (#{user.username},#{user.password},#{user.age},#{user.birthday},#{user.createDate},#{user.mobile})\n&gt;     &lt;\/insert&gt;\n&gt;     ```\n\n# \u61d2\u52a0\u8f7d\uff08\u4e86\u89e3\uff09\n\n&gt; \u61d2\u52a0\u8f7d\u548cMyBatis\u7f13\u5b58\u4f5c\u4e3a\u4e86\u89e3, \u77e5\u9053\u662f\u600e\u4e48\u56de\u4e8b, \u9762\u8bd5\u7684\u65f6\u5019\u53ef\u4ee5\u8c08\u4e00\u8c08\u601d\u60f3\u5373\u53ef, \u56e0\u4e3a\u5de5\u4f5c\u4e2d\u5e76\u4e0d\u4f1a\u4f7f\u7528(\u57fa\u672c\u4e0d\u4f1a\u4f7f\u7528)\n&gt;\n&gt; \u61d2\u52a0\u8f7d\u53c8\u53eb\u505a\u5ef6\u8fdf\u52a0\u8f7d\u3002\n&gt;\n&gt; ```java\n&gt; \/\/ \u662f\u6307\u5728Mybatis\u8fdb\u884c\u5206\u6b21\u67e5\u8be2\u7684\u65f6\u5019\uff0c\u5047\u5982\u7b2c\u4e8c\u6b21\u67e5\u8be2\u7684\u5185\u5bb9\u6ca1\u6709\u88ab\u4f7f\u7528\u5230\u7684\u8bdd\uff0c\u90a3\u4e48\u5c31\u4e0d\u53bb\u6267\u884c\u7b2c\u4e8c\u6b21\u67e5\u8be2\u7684SQL\u8bed\u53e5\uff0c\u7b49\u5230\u7528\u5230\u7b2c\u4e8c\u6b21\u67e5\u8be2\u7684\u5185\u5bb9\u7684\u65f6\u5019\u518d\u53bb\u6267\u884c\u7b2c\u4e8c\u6761SQL\u8bed\u53e5\u3002\n&gt; ```\n&gt;\n&gt; \u6ce8\u610f:\n&gt;\n&gt; ```java\n&gt; \/\/ 1. \u5f53\u5c40\u90e8\u5f00\u5173\u914d\u7f6e\u7684\u65f6\u5019\uff0c\u4ee5\u5c40\u90e8\u5f00\u5173\u7684\u914d\u7f6e\u4e3a\u51c6\n&gt; \/\/ 2. \u5f53\u5c40\u90e8\u5f00\u5173\u6ca1\u6709\u914d\u7f6e\u7684\u65f6\u5019\uff0c\u4ee5\u603b\u5f00\u5173\u7684\u914d\u7f6e\u4e3a\u51c6\n&gt; \/\/ 3. \u5f53\u603b\u5f00\u5173\u4e5f\u6ca1\u6709\u914d\u7f6e\u7684\u65f6\u5019\uff0c\u4ee5\u9ed8\u8ba4\u914d\u7f6e\u4e3a\u51c6\uff08\u9ed8\u8ba4\u914d\u7f6e\u662f\u5173\u95ed\u61d2\u52a0\u8f7d\uff09\n&gt; ```\n\n&gt;\u603b\u5f00\u5173\u914d\u7f6e: mybatis\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6\u91cc\u9762\u7684settings\u91cc\u9762\n&gt;\n&gt;```xml\n&gt;&lt;settings&gt;\n&gt;     &lt;!-- \u61d2\u52a0\u8f7d true: \u8868\u793a\u5f00\u542f  false:\u9ed8\u8ba4\u503c\uff0c\u8868\u793a\u5173\u95ed --&gt; \n&gt;     &lt;setting name=\"lazyLoadingEnabled\" value=\"true\"\/&gt;\n&gt;&lt;\/settings&gt;\n&gt;```\n&gt;\n&gt;\u6848\u4f8b\n&gt;\n&gt;```java\n&gt;public interface UserMapper {\n&gt;\n&gt;      User[] selectUsersByIdArray(@Param(\"ids\") Integer[] ids);\n&gt;\n&gt;}\n&gt;```\n&gt;\n&gt;\n\n&gt;\u5c40\u90e8\u5f00\u5173\n&gt;\n&gt;```xml\n&gt;&lt;mapper namespace=\"com.cskaoyan.mapper.UserMapper\"&gt;\n&gt;    &lt;resultMap id=\"userMap\" type=\"com.cskaoyan.vo.User\"&gt;\n&gt;        &lt;result column=\"id\" property=\"id\"\/&gt;\n&gt;        &lt;result column=\"username\" property=\"username\"\/&gt;\n&gt;        &lt;result column=\"password\" property=\"password\"\/&gt;\n&gt;        &lt;result column=\"age\" property=\"age\"\/&gt;\n&gt;        &lt;result column=\"birthday\" property=\"birthday\"\/&gt;\n&gt;        &lt;result column=\"mobile\" property=\"mobile\"\/&gt;\n&gt;        &lt;!--column\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u67e5\u8be2\u7ed3\u679c\u7684\u5217\u540d--&gt;\n&gt;        &lt;!--property\u5c5e\u6027\uff1a\u59cb\u7ec8\u5bf9\u5e94\u7684\u662f\u7236\u6807\u7b7e\u7c7b\u578b\u7684\u6210\u5458\u53d8\u91cf\u540d--&gt;\n&gt;        &lt;result column=\"create_date\" property=\"createDate\"\/&gt;\n&gt;        &lt;!--\u4e00\u5bf9\u591a\u4f7f\u7528\u7684\u6807\u7b7e\u662fcollection\u6807\u7b7e--&gt;\n&gt;        &lt;collection column=\"id\" property=\"orders\" fetchType=\"eager\"\n&gt;                     select=\"com.cskaoyan.mapper.UserMapper.selectOrdersByUserId\"\/&gt;\n&gt;    &lt;\/resultMap&gt;\n&gt;    &lt;!--\u7b2c\u4e00\u6b21\u67e5\u8be2--&gt;\n&gt;    &lt;select id=\"selectUsersByIdArray\" resultMap=\"userMap\"&gt;\n&gt;        SELECT id,username,password,age,mobile,birthday,create_date from cskaoyan_user\n&gt;        where id in\n&gt;        &lt;foreach collection=\"ids\" item=\"id\" separator=\",\" open=\"(\" close=\")\"&gt;\n&gt;           #{id}\n&gt;        &lt;\/foreach&gt;\n&gt;    &lt;\/select&gt;\n&gt;    &lt;!--select\u6807\u7b7e\u5728Mapper\u63a5\u53e3\u4e2d\u662f\u5426\u6709\u5bf9\u5e94\u7684\u65b9\u6cd5\uff1f\u6ca1\u6709\uff0c\u5982\u679c\u4f5c\u4e3a\u5206\u6b21\u67e5\u8be2\u7684\u7b2c\u4e8c\u6b21\u67e5\u8be2#{}\u91cc\u53ef\u4ee5\u4efb\u610f\u5199--&gt;\n&gt;    &lt;select id=\"selectOrdersByUserId\" resultType=\"com.cskaoyan.vo.Order\"&gt;\n&gt;        select id, name, price\n&gt;        from cskaoyan_order\n&gt;        where user_id = #{zzz}\n&gt;    &lt;\/select&gt;\n&gt;\n&gt;&lt;\/mapper&gt;\n&gt;\n&gt;```\n&gt;\n&gt;\u6ce8\u610f\uff1aidea\u7684Debug\u6a21\u5f0f\u4e0b\u4e0d\u80fd\u590d\u73b0\u61d2\u52a0\u8f7d\uff0c\u56e0\u4e3adebug\u6a21\u5f0f\u4f1a\u663e\u793a\u51fa\u5bf9\u8c61\u4e2d\u7684\u6240\u6709\u7684\u4fe1\u606f\uff0c\u76f8\u5f53\u4e8e\u5df2\u7ecf\u7528\u5230\u4e86\u7b2c\u4e8c\u6b21SQL\u8bed\u53e5\u67e5\u8be2\u7684\u5185\u5bb9\uff0c\u6240\u4ee5\u7b2c\u4e8c\u6b21SQL\u8bed\u53e5\u5c31\u4f1a\u7acb\u9a6c\u6267\u884c\n\n# \u7f13\u5b58\uff08\u4e86\u89e3\uff09\n\n&gt; \u7f13\u5b58\u662f\u6307\u5728Mybatis\u4e2d\uff0c\u5355\u72ec\u5f00\u8f9f\u4e00\u5757\u5185\u5b58\u7a7a\u95f4\uff08map\uff09\uff0c\u6765\u5b58\u50a8\u67e5\u8be2\u7684\u4fe1\u606f\u3002\u540e\u7eed\u5047\u5982\u518d\u6b21\u8c03\u7528\u4e86\u5230\u4e86\u540c\u6837\u7684\u67e5\u8be2\uff0c\u90a3\u4e48\u5c31\u76f4\u63a5\u67e5\u8be2\u7f13\u5b58\u3002\n&gt;\n&gt; `MyBatis\u9ed8\u8ba4\u5f00\u542f\u4e86\u7f13\u5b58`\n&gt;\n&gt; ```java\n&gt; MyBatis\u662f\u600e\u4e48\u5b58\u50a8\u7f13\u5b58\u7684: \u5728MyBatis\u4e2d\u7f13\u5b58\u662f\u4ee5Map(\u96c6\u5408\u7c7b\u5bb9\u5668)\u63a5\u53e3\u5b58\u50a8\u7684\n&gt; \/\/ map\uff1a\n&gt; \/\/  \tkey\uff1aSQL\u8bed\u53e5\u548c\u67e5\u8be2\u7684\u6761\u4ef6(\u6ce8\u610f: SQL\u8bed\u53e5\u662f\u4f9d\u8d56\u4e8e\u5750\u6807\u7684)\t\t\t\t\n&gt; \/\/\t\t\t\t\t\t\t (MapperID+Sql+\u6240\u6709\u7684\u5165\u53c2)\n&gt; \/\/ \t\tvalue\uff1a\u67e5\u8be2\u7684\u7ed3\u679c\n&gt; ```\n\n## \u4e00\u7ea7\u7f13\u5b58\n\n&gt; &lt;span style='color:red;background:yellow;'&gt;**\u4e00\u7ea7\u7f13\u5b58\u662f\u4e00\u4e2a\u4ee5SqlSession\u7ba1\u7406\u7684Mapper\u7ea7\u522b\u7684\u7f13\u5b58**&lt;\/span&gt;\u3002\u7f13\u5b58\u7684\u5185\u5bb9\u5b58\u50a8\u5728SQLSession\u4e2d\u7ba1\u7406\u3002\n&gt;\n&gt; &lt;img src=\".\/image\/05_MyBatis\/image-20220523111926242.png\" alt=\"image-20220523111926242\" width=\"67%;\" \/&gt;\n\n&gt; \u914d\u7f6e\uff1a\u4e00\u7ea7\u7f13\u5b58\u9ed8\u8ba4\u662f\u5f00\u542f\u7684\uff0c\u5e76\u4e14\u6ca1\u6709\u63d0\u4f9b\u5f00\u5173\u7ed9\u7528\u6237\u5173\u95ed(\u4e0d\u53ef\u4ee5\u5173\u95ed)\u3002\n&gt;\n&gt; ```java\n&gt; \u4e00\u7ea7\u7f13\u5b58\u4ec0\u4e48\u65f6\u5019\u5931\u6548\u5462\uff1f\n&gt; \/\/  \tSqlSession\u5173\u95ed\u7684\u65f6\u5019\n&gt; \/\/    SqlSession\u8c03\u7528\u589e\u5220\u6539\u7684\u65f6\u5019,\u4f1a\u6e05\u7a7a\u5f53\u524dSqlSession\u7f13\u5b58\n&gt; \/\/ \t\tSqlSession\u8c03\u7528commit\u65b9\u6cd5\n&gt; ```\n\n### \u6d4b\u8bd5\n\n&gt; \u540c\u4e00\u4e2aSqlSession \u83b7\u53d6\u7684\u540c\u4e00\u4e2aMapper: \u8d70\u7f13\u5b58\n&gt;\n&gt; \u540c\u4e00\u4e2aSQLSession\u83b7\u53d6\u4e0d\u540c\u7684mapper: \u8d70\u7f13\u5b58\n&gt;\n&gt; \u4e0d\u540cSQLSession\u83b7\u53d6\u4e0d\u540c\u7684mapper: \u4e0d\u8d70\u7f13\u5b58\n&gt;\n&gt; ```java\n&gt; @Test\n&gt; public void mytest1() {\n&gt;     \/\/\u4f7f\u7528\u540c\u4e00\u4e2asqlSession\u7684\u540c\u4e00\u4e2aMapper\u53ef\u4ee5\u4f7f\u7528\u5230\u4e00\u7ea7\u7f13\u5b58\n&gt;     User user1 = userMapper.selectByPrimaryKey(1);\/\/\u751f\u6210\u7f13\u5b58\n&gt;     User user2 = userMapper.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     User user3 = userMapper.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     User user4 = userMapper.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     User user5 = userMapper.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt; \n&gt; }\n&gt; \n&gt; @Test\n&gt; public void mytest2() {\n&gt;     \/\/\u4f7f\u7528\u540c\u4e00\u4e2asqlSession\u7684\u4e0d\u540cMapper\u53ef\u4ee5\u4f7f\u7528\u5230\u4e00\u7ea7\u7f13\u5b58\n&gt;     UserMapper userMapper1 = sqlSession.getMapper(UserMapper.class);\n&gt;     UserMapper userMapper2 = sqlSession.getMapper(UserMapper.class);\n&gt; \n&gt;     User user1 = userMapper1.selectByPrimaryKey(1);\/\/\u751f\u6210\u7f13\u5b58\n&gt;     User user2 = userMapper1.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     User user3 = userMapper2.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     User user4 = userMapper2.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt; \n&gt; }\n&gt; \n&gt; @Test\n&gt; public void mytest3() {\n&gt;     \/\/\u5982\u679csqlSession\u53d1\u751f\u53d8\u5316\uff0c\u4f7f\u7528\u4e0d\u5230\u4e00\u7ea7\u7f13\u5b58\n&gt;     SqlSession sqlSession1 = sqlSessionFactory.openSession();\n&gt;     SqlSession sqlSession2 = sqlSessionFactory.openSession();\n&gt; \n&gt;     UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);\n&gt;     UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);\n&gt;     User user1 = userMapper1.selectByPrimaryKey(1);\/\/\u751f\u6210\u7f13\u5b58\n&gt;     User user2 = userMapper1.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     User user3 = userMapper2.selectByPrimaryKey(1);\/\/\u751f\u6210\u7f13\u5b58\n&gt;     User user4 = userMapper2.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt; }\n&gt; \n&gt; \n&gt; @Test\n&gt; public void mytest4() {\n&gt;     \/\/\u4f7f\u7528\u540c\u4e00\u4e2asqlSession\u7684\u540c\u4e00\u4e2aMapper\u53ef\u4ee5\u4f7f\u7528\u5230\u4e00\u7ea7\u7f13\u5b58\n&gt;     User user1 = userMapper.selectByPrimaryKey(1);\/\/\u751f\u6210\u7f13\u5b58\n&gt;     User user2 = userMapper.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     User user3 = userMapper.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt;     sqlSession.commit();                             \/\/\u7f13\u5b58\u5931\u6548\n&gt;     User user4 = userMapper.selectByPrimaryKey(1);\/\/\u751f\u6210\u7f13\u5b58\n&gt;     User user5 = userMapper.selectByPrimaryKey(1);\/\/\u4f7f\u7528\u7f13\u5b58\n&gt; \n&gt; }\n&gt; ```\n\n\n\n## \u4e8c\u7ea7\u7f13\u5b58\n\n&gt; &lt;span style='color:red;background:yellow;'&gt;**\u4e8c\u7ea7\u7f13\u5b58\u662f\u4e00\u4e2aNameSpace\u7ea7\u522b\uff08mapper.xml\uff09\u7684\u7f13\u5b58**&lt;\/span&gt;\uff0c\u6bcf\u4e00\u4e2aNameSpace\u90fd\u6709\u81ea\u5df1\u7684\u5355\u72ec\u7684\u7f13\u5b58\u7a7a\u95f4\u3002(\u8981\u901a\u8fc7\u4e24\u7ea7\u914d\u7f6e\u5f00\u542f)\n\n&gt; \u914d\u7f6e1\uff1a\u603b\u5f00\u5173\n&gt;\n&gt; ```xml\n&gt; &lt;!-- \u4e8c\u7ea7\u7f13\u5b58\u5f00\u5173\u914d\u7f6e --&gt;\n&gt; &lt;setting name=\"cacheEnabled\" value=\"true\"\/&gt;\n&gt; ```\n&gt;\n&gt; \u914d\u7f6e2: \u5c40\u90e8\u5f00\u5173\n&gt;\n```<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">```\n\n\n\n&gt;&lt;span style=\"color:red\"&gt;\u9700\u8981\u5bf9\u4e8c\u7ea7\u7f13\u5b58\u7684\u7f13\u5b58\u7684\u6240\u6709\u76f8\u5173\u5bf9\u8c61\u5b9e\u73b0\u5e8f\u5217\u5316\u63a5\u53e3&lt;\/span&gt;\n&gt;\n&gt;\u5f00\u542f\u81ea\u52a8\u751f\u6210\u5e8f\u5217\u5316id\n&gt;\n&gt;&lt;img src=\".\/image\/05_MyBatis\/image-20220523114729631.png\" alt=\"image-20220523114729631\" width=\"67%;\" \/&gt;\n&gt;\n&gt;\u5b9e\u73b0\u5e8f\u5217\u5316\u63a5\u53e3\uff0c\u751f\u6210\u5e8f\u5217\u5316id\n&gt;\n&gt;&lt;img src=\".\/image\/05_MyBatis\/image-20220523114755302.png\" alt=\"image-20220523114755302\" width=\"67%;\" \/&gt;\n\n&gt;```java\n&gt;\/\/ 1, \u4e8c\u7ea7\u7f13\u5b58\u662f namespace\u7ea7\u522b\/Mapper\u7ea7\u522b \u7684\u7f13\u5b58\n&gt;\/\/ 2, \u591a\u4e2aSqlSession\u53ef\u4ee5\u5171\u7528\u4e8c\u7ea7\u7f13\u5b58(\u540c\u4e00\u4e2aMapper)\n&gt;\/\/ 3, \u5728\u5173\u95edsqlsession\u540e(close);  \u624d\u4f1a\u628a\u8be5sqlsession\u4e00\u7ea7\u7f13\u5b58\u4e2d\u7684\u6570\u636e\u6dfb\u52a0\u5230\u5bf9\u5e94namespace\u7684\u4e8c\u7ea7\u7f13\u5b58\u4e2d\u3002\n&gt;\/\/ 4, \u5f53Mybatis\u9ed8\u8ba4\u5148\u67e5\u8be2\u4e8c\u7ea7\u7f13\u5b58\uff0c\u4e8c\u7ea7\u7f13\u5b58\u4e2d\u65e0\u5bf9\u5e94\u6570\u636e\uff0c\u518d\u53bb\u67e5\u8be2\u4e00\u7ea7\u7f13\u5b58\uff0c\u4e00\u7ea7\u7f13\u5b58\u4e2d\u4e5f\u6ca1\u6709\uff0c\u6700\u540e\u53bb\u6570\u636e\u5e93\u67e5\u627e\u3002\n&gt;```\n&gt;\n&gt;&lt;img src=\".\/image\/05_MyBatis\/image-20220523142818860.png\" alt=\"image-20220523142818860\" width=\"67%;\" \/&gt;\n\n### \u6d4b\u8bd5\n\n&gt;\u6d4b\u8bd5\n&gt;\n&gt;```java\n&gt;@Test\n&gt;public void mytest3() {\n&gt;    SqlSession sqlSession1 = sqlSessionFactory.openSession();\n&gt;    SqlSession sqlSession2 = sqlSessionFactory.openSession();\n&gt;    SqlSession sqlSession3 = sqlSessionFactory.openSession();\n&gt;    SqlSession sqlSession4 = sqlSessionFactory.openSession();\n&gt;\n&gt;    UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);\n&gt;    UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);\n&gt;    UserMapper userMapper3 = sqlSession3.getMapper(UserMapper.class);\n&gt;    UserMapper userMapper4 = sqlSession4.getMapper(UserMapper.class);\n&gt;\n&gt;    User user1 = userMapper1.selectByPrimaryKey(1);\n&gt;    User user2 = userMapper2.selectByPrimaryKey(1);\n&gt;    User user3 = userMapper3.selectByPrimaryKey(1);\n&gt;    User user4 = userMapper4.selectByPrimaryKey(1);\n&gt;    \/\/\u8fd9\u4e2a\u6848\u4f8b\u6ca1\u6709\u4f7f\u7528\u5230\u4e8c\u7ea7\u7f13\u5b58\n&gt;}\n&gt;@Test\n&gt;public void mytest4() {\n&gt;    SqlSession sqlSession1 = sqlSessionFactory.openSession();\n&gt;    SqlSession sqlSession2 = sqlSessionFactory.openSession();\n&gt;    SqlSession sqlSession3 = sqlSessionFactory.openSession();\n&gt;    SqlSession sqlSession4 = sqlSessionFactory.openSession();\n&gt;\n&gt;    UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);\n&gt;    UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);\n&gt;    UserMapper userMapper3 = sqlSession3.getMapper(UserMapper.class);\n&gt;    UserMapper userMapper4 = sqlSession4.getMapper(UserMapper.class);\n&gt;\n&gt;    User user1 = userMapper1.selectByPrimaryKey(1);\n&gt;    sqlSession1.close(); \/\/\u5c06\u6570\u636e\u653e\u5165\u4e8c\u7ea7\u7f13\u5b58\n&gt;    User user2 = userMapper2.selectByPrimaryKey(1);\n&gt;    User user3 = userMapper3.selectByPrimaryKey(1);\n&gt;    User user4 = userMapper4.selectByPrimaryKey(1);\n&gt;    User user5 = userMapper4.selectByPrimaryKey(1);\n&gt;    \/\/\u8fd9\u4e2a\u6848\u4f8b\u6709\u4f7f\u7528\u5230\u4e8c\u7ea7\u7f13\u5b58 cache hit ratio\n&gt;}\n&gt;```\n\n&gt; \u4e8c\u7ea7\u7f13\u5b58\u6709\u6ca1\u6709\u7528\u5462\uff1f\n&gt;\n&gt; - \u5176\u5b9e\u6709\u4e00\u5b9a\u7684\u4f5c\u7528\uff0c\u4f46\u662f\u4e5f\u6709\u4e00\u5b9a\u7684\u7f3a\u9677\n&gt;\n&gt;   - \u786e\u5b9e\u80fd\u591f\u63d0\u9ad8Mybatis\u7684\u6027\u80fd\n&gt;   - \u4e0d\u80fd\u5b8c\u7f8e\u7684\u89e3\u51b3\u810f\u6570\u636e\u7684\u95ee\u9898\n&gt;   - \u4e8c\u7ea7\u7f13\u5b58\u7a7a\u95f4\u5bf9\u4e8e\u7528\u6237\u6765\u8bf4\u662f\u5b8c\u5168\u900f\u660e\u7684\uff0c\u6211\u4eec\u7528\u6237\u4e0d\u80fd\u591f\u76f4\u63a5\u7684\u53bb\u64cd\u4f5c\u5b83\uff0c\u4e5f\u4e0d\u80fd\u591f\u8ba9\u7528\u6237\u6307\u5b9a\u53bb\u67e5\u8be2\u6570\u636e\u5e93\u8fd8\u662f\u67e5\u8be2\u7f13\u5b58\uff0c\u6240\u4ee5\u5176\u5b9e\u4f7f\u7528\u8d77\u6765\u4e0d\u592a\u65b9\u4fbf\n&gt;\n&gt;   \u5728\u4ee5\u540e\u7684\u5de5\u4f5c\u4e2d\uff0c\u6709\u4e00\u4e9b\u9700\u8981\u4f7f\u7528\u7f13\u5b58\u7684\u573a\u666f\uff0c\u90a3\u4e48\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u4e0d\u4f1a\u8003\u8651\u4f7f\u7528Mybatis\u7ed9\u6211\u4eec\u63d0\u4f9b\u7684\u7f13\u5b58\uff0c\u53d6\u800c\u4ee3\u4e4b\u7684\u662f\u4f7f\u7528\u6211\u4eec\u7684NoSQL\u6570\u636e\u5e93\uff08Redis\uff09\u3002\n\n# \u6ce8\u89e3\uff08\u4e86\u89e3\uff09\n\n\u5728MyBatis\u7684Mapper\u63a5\u53e3\u4e2d\u4e5f\u53ef\u4ee5\u4f7f\u7528\u6ce8\u89e3\u7684\u65b9\u5f0f\u6765\u8fdb\u884c\u5f00\u53d1\n\n&gt; \u4f7f\u7528\u4ee5\u4e0b\u51e0\u4e2a\u6ce8\u89e3\n&gt;\n&gt; @Select\n&gt;\n&gt; @Insert\n&gt;\n&gt; @Delete\n&gt;\n&gt; @Update\n&gt;\n&gt; \u8fd9\u4e9b\u6ce8\u89e3\u5747\u53ef\u4ee5\u76f4\u63a5\u5199\u5728Mapper\u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5\u4e0a\uff0c\u5728\u6ce8\u89e3\u7684value\u5c5e\u6027\u4e2d\u76f4\u63a5\u5199SQL\u8bed\u53e5\uff0c\u8fd9\u6837\u5b50\u5c31\u4e0d\u9700\u8981\u5728\u6620\u5c04\u6587\u4ef6\u4e2d\u5199\u4e86\n\n\u6bd4\u5982\u6211\u4eec\u8fd9\u6837\u5b50\u6765\u5199\n```<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">public interface UserMapper{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">@Select(&#8220;select * from cskaoyan_user where id = #{id}&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">User selectByPrimaryKey(@Param(&#8220;id&#8221;)Integer id);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">@Delete(&#8220;delete from cskaoyan_user where id = #{id}&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">int deleteByPrimaryKey(@Param(&#8220;id&#8221;)Integer id)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b66\u4e60\u76ee\u6807 1. \u7406\u89e3MyBatis\u7684\u8bbe\u8ba1\u601d\u60f3 &#8211; MyBatis\u548cJDBC\u7684\u5173\u7cfb &#8211;  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[14],"class_list":["post-576","post","type-post","status-publish","format-standard","hentry","category-learn","tag-14"],"_links":{"self":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts\/576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/comments?post=576"}],"version-history":[{"count":3,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts\/576\/revisions"}],"predecessor-version":[{"id":615,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/posts\/576\/revisions\/615"}],"wp:attachment":[{"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/media?parent=576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/categories?post=576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/larkdrop.cafe\/index.php\/wp-json\/wp\/v2\/tags?post=576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}