{"id":5810,"date":"2024-04-16T00:05:34","date_gmt":"2024-04-15T16:05:34","guid":{"rendered":"http:\/\/zyg.luchers.cn\/?p=5810"},"modified":"2024-04-16T00:05:34","modified_gmt":"2024-04-15T16:05:34","slug":"%e5%9b%9b%e3%80%81mybatis%e5%8a%a8%e6%80%81%e8%af%ad%e5%8f%a5","status":"publish","type":"post","link":"http:\/\/zyg.luchers.cn\/index.php\/2024\/04\/16\/%e5%9b%9b%e3%80%81mybatis%e5%8a%a8%e6%80%81%e8%af%ad%e5%8f%a5\/","title":{"rendered":"\u56db\u3001MyBatis\u52a8\u6001\u8bed\u53e5"},"content":{"rendered":"<h1>\u56db\u3001MyBatis\u52a8\u6001\u8bed\u53e5<\/h1>\n<h2>1\u3001\u52a8\u6001\u8bed\u53e5\u9700\u6c42\u548c\u7b80\u4ecb<\/h2>\n<h3>1\u3001\u9700\u6c42<\/h3>\n<p>1\u3001\u5e94\u5bf9\u591a\u4e2a\u6761\u4ef6\u67e5\u8be2\u3002<\/p>\n<p>2\u3001\u6709\u5f88\u591a\u6761\u4ef6\u4e0d\u6ee1\u8db3\u7684\u3002<\/p>\n<h3>2\u3001\u7b80\u4ecb<\/h3>\n<p>1\u3001\u52a8\u6001 SQL \u662f MyBatis \u7684\u5f3a\u5927\u7279\u6027\u4e4b\u4e00\u3002\u5982\u679c\u4f60\u4f7f\u7528\u8fc7 JDBC \u6216\u5176\u5b83\u7c7b\u4f3c\u7684\u6846\u67b6\uff0c\u4f60\u5e94\u8be5\u80fd\u7406\u89e3\u6839\u636e\u4e0d\u540c\u6761\u4ef6\u62fc\u63a5 SQL \u8bed\u53e5\u6709\u591a\u75db\u82e6\uff0c\u4f8b\u5982\u62fc\u63a5\u65f6\u8981\u786e\u4fdd\u4e0d\u80fd\u5fd8\u8bb0\u6dfb\u52a0\u5fc5\u8981\u7684\u7a7a\u683c\uff0c\u8fd8\u8981\u6ce8\u610f\u53bb\u6389\u5217\u8868\u6700\u540e\u4e00\u4e2a\u5217\u540d\u7684\u9017\u53f7\u3002\u5229\u7528\u52a8\u6001 SQL\uff0c\u53ef\u4ee5\u5f7b\u5e95\u6446\u8131\u8fd9\u79cd\u75db\u82e6\u3002<\/p>\n<p>2\u3001\u4f7f\u7528\u52a8\u6001 SQL \u5e76\u975e\u4e00\u4ef6\u6613\u4e8b\uff0c\u4f46\u501f\u52a9\u53ef\u7528\u4e8e\u4efb\u4f55 SQL \u6620\u5c04\u8bed\u53e5\u4e2d\u7684\u5f3a\u5927\u7684\u52a8\u6001 SQL \u8bed\u8a00\uff0cMyBatis \u663e\u8457\u5730\u63d0\u5347\u4e86\u8fd9\u4e00\u7279\u6027\u7684\u6613\u7528\u6027\u3002<\/p>\n<p>3\u3001\u5982\u679c\u4f60\u4e4b\u524d\u7528\u8fc7 JSTL \u6216\u4efb\u4f55\u57fa\u4e8e\u7c7b XML \u8bed\u8a00\u7684\u6587\u672c\u5904\u7406\u5668\uff0c\u4f60\u5bf9\u52a8\u6001 SQL \u5143\u7d20\u53ef\u80fd\u4f1a\u611f\u89c9\u4f3c\u66fe\u76f8\u8bc6\u3002\u5728 MyBatis \u4e4b\u524d\u7684\u7248\u672c\u4e2d\uff0c\u9700\u8981\u82b1\u65f6\u95f4\u4e86\u89e3\u5927\u91cf\u7684\u5143\u7d20\u3002\u501f\u52a9\u529f\u80fd\u5f3a\u5927\u7684\u57fa\u4e8e OGNL \u7684\u8868\u8fbe\u5f0f\uff0cMyBatis 3 \u66ff\u6362\u4e86\u4e4b\u524d\u7684\u5927\u90e8\u5206\u5143\u7d20\uff0c\u5927\u5927\u7cbe\u7b80\u4e86\u5143\u7d20\u79cd\u7c7b\uff0c\u73b0\u5728\u8981\u5b66\u4e60\u7684\u5143\u7d20\u79cd\u7c7b\u6bd4\u539f\u6765\u7684\u4e00\u534a\u8fd8\u8981\u5c11\u3002<\/p>\n<h2>2\u3001if\u548cwhere\u6807\u7b7e<\/h2>\n<h3>1\u3001if\u6807\u7b7e<\/h3>\n<p>1\u3001\u5c31\u662f\u7528\u6765\u8fdb\u884c\u5224\u65ad\uff0c\u54ea\u4e9b\u6761\u4ef6\u9700\u8981\u52a0<\/p>\n<p>2\u3001\u5185\u5bb9<\/p>\n<ul>\n<li>if \u5224\u65ad\u4f20\u5165\u7684\u53c2\u6570\uff0c\u6700\u7ec8\u662f\u5426\u6dfb\u52a0\u8bed\u53e5<\/li>\n<li>test\u5c5e\u6027\uff1a \u5185\u90e8\u505a\u6bd4\u8f83\u8fd0\u7b97\uff0c\u6700\u7ec8true\u5c06\u6807\u7b7e\u5185\u7684sql\u8bed\u53e5\u8fdb\u884c\u62fc\u63a5\u3002\u5982\u679c\u4e3afalse\u5c31\u4e0d\u62fc\u63a5<\/li>\n<li>\u5224\u65ad\u8bed\u53e5\uff1a\u201ckey \u6bd4\u8f83\u7b26\u53f7 \u503c and | or key \u6bd4\u8f83\u7b26\u53f7 \u503c \u201d<\/li>\n<li>\u5927\u4e8e\u5c0f\u4e8e\u4e0d\u63a8\u8350\u76f4\u63a5\u4f7f\u7528\u7b26\u53f7\u3002\u4e00\u822c\u7528\u5b9e\u4f53\u7b26\u53f7\u6765\u8868\u793a \u5927\u4e8e\uff1a&gt;   \u5c0f\u4e8e\uff1a &lt;<\/li>\n<\/ul>\n<h3>2\u3001where\u6761\u4ef6<\/h3>\n<p>1\u3001\u5c31\u662f\u7528\u6765\u89e3\u51b3\uff0cif\u5224\u65ad\u4e2d\u53ef\u80fd\u51fa\u73b0\u7684\u95ee\u9898<\/p>\n<p>2\u3001\u95ee\u9898<\/p>\n<ul>\n<li>\u5982\u679c\u4e24\u4e2a\u6761\u4ef6\u90fd\u6ee1\u8db3<\/li>\n<li>\u5982\u679c\u7b2c\u4e00\u4e2a\u6761\u4ef6\u6ee1\u8db3 emp_name = #{name}<\/li>\n<li>\u5982\u679c\u7b2c\u4e00\u4e2a\u6761\u4ef6\u4e0d\u6ee1\u8db3\uff0c\u7b2c\u4e8c\u4e2a\u6761\u4ef6\u6ee1\u8db3<\/li>\n<li>\u5982\u679c\u4e24\u4e2a\u90fd\u4e0d\u6ee1\u8db3<\/li>\n<\/ul>\n<p>3\u3001where\u7684\u4f5c\u7528<\/p>\n<ul>\n<li>\u81ea\u52a8\u6dfb\u52a0where\u5173\u952e\u5b57 where\u5185\u90e8\u6709\u4efb\u4f55\u4e00\u4e2aif\u6ee1\u8db3\uff0c\u5c31\u81ea\u52a8\u6dfb\u52a0where\u5173\u952e\u5b57\uff0c\u5426\u5219\u53bb\u6389<\/li>\n<li>\u81ea\u52a8\u53bb\u6389\u591a\u4f59\u7684and \u548cor<\/li>\n<\/ul>\n<h3>3\u3001\u4f8b\u5b50<\/h3>\n<p>1\u3001\u51c6\u5907\u5b9e\u4f53\u7c7b<\/p>\n<pre><code class=\"language-java\">package com.atgui.pojo;\n\npublic class Employee {\n    private int empId;\n    private String empName;\n    private String empSalary;\n\n    public int getEmpId() {\n        return empId;\n    }\n\n    public void setEmpId(int empId) {\n        this.empId = empId;\n    }\n\n    public String getEmpName() {\n        return empName;\n    }\n\n    public void setEmpName(String empName) {\n        this.empName = empName;\n    }\n\n    public String getEmpSalary() {\n        return empSalary;\n    }\n\n    public void setEmpSalary(String empSalary) {\n        this.empSalary = empSalary;\n    }\n\n    @Override\n    public String toString() {\n        return &quot;Employee{&quot; +\n                &quot;empId=&quot; + empId +\n                &quot;, empName=&#039;&quot; + empName + &#039;\\&#039;&#039; +\n                &quot;, empSalary=&#039;&quot; + empSalary + &#039;\\&#039;&#039; +\n                &#039;}&#039;;\n    }\n}\n<\/code><\/pre>\n<p>2\u3001\u51c6\u5907\u63a5\u53e3<\/p>\n<pre><code class=\"language-java\">package com.atgui.mapper;\n\nimport com.atgui.pojo.Employee;\nimport org.apache.ibatis.annotations.Param;\n\nimport java.util.List;\n\npublic interface EmployeeMapper {\n\n    List&lt;Employee&gt; query(@Param(&quot;name&quot;) String  name,@Param(&quot;salary&quot;) Double salary);\n}\n<\/code><\/pre>\n<p>3\u3001\u51c6\u5907employee.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;\n&lt;!DOCTYPE mapper\n        PUBLIC &quot;-\/\/mybatis.org\/\/DTD Mapper 3.0\/\/EN&quot;\n        &quot;https:\/\/mybatis.org\/dtd\/mybatis-3-mapper.dtd&quot;&gt;\n&lt;!-- namespace\u7b49\u4e8emapper\u63a5\u53e3\u7c7b\u7684\u5168\u9650\u5b9a\u540d,\u8fd9\u6837\u5b9e\u73b0\u5bf9\u5e94 --&gt;\n&lt;mapper namespace=&quot;com.atgui.mapper.EmployeeMapper&quot;&gt;\n\n&lt;!--\n            \u573a\u666f\uff1a\u5982\u679c\u4f20\u5165\u5c5e\u6027\uff0c\u5c31\u5224\u65ad\u76f8\u7b49\uff0c\u5982\u679c\u4e0d\u4f20\u5165\uff0c\u5c31\u4e0d\u52a0\u5bf9\u5e94\u7684\u6761\u4ef6\n                where\n                if \u5224\u65ad\u4f20\u5165\u7684\u53c2\u6570\uff0c\u6700\u7ec8\u662f\u5426\u6dfb\u52a0\u8bed\u53e5\n                    test\u5c5e\u6027\uff1a \u5185\u90e8\u505a\u6bd4\u8f83\u8fd0\u7b97\uff0c\u6700\u7ec8true\u5c06\u6807\u7b7e\u5185\u7684sql\u8bed\u53e5\u8fdb\u884c\u62fc\u63a5\u3002\u5982\u679c\u4e3afalse\u5c31\u4e0d\u62fc\u63a5\n\n                    \u5224\u65ad\u8bed\u53e5\uff1a\u201ckey \u6bd4\u8f83\u7b26\u53f7 \u503c and | or key \u6bd4\u8f83\u7b26\u53f7 \u503c \u201d\n                    \u5927\u4e8e\u5c0f\u4e8e\u4e0d\u63a8\u8350\u76f4\u63a5\u4f7f\u7528\u7b26\u53f7\u3002\u4e00\u822c\u7528\u5b9e\u4f53\u7b26\u53f7\u6765\u8868\u793a \u5927\u4e8e\uff1a&gt;   \u5c0f\u4e8e\uff1a &lt;\n\n                \u8fd8\u6709\u9047\u5230\u7684\u95ee\u9898\n                    \u5982\u679c\u4e24\u4e2a\u6761\u4ef6\u90fd\u6ee1\u8db3\n                    \u5982\u679c\u7b2c\u4e00\u4e2a\u6761\u4ef6\u6ee1\u8db3 emp_name = #{name}\n                    \u5982\u679c\u7b2c\u4e00\u4e2a\u6761\u4ef6\u4e0d\u6ee1\u8db3\uff0c\u7b2c\u4e8c\u4e2a\u6761\u4ef6\u6ee1\u8db3\n                    \u5982\u679c\u4e24\u4e2a\u90fd\u4e0d\u6ee1\u8db3\n\n                   \u89e3\u51b3\uff1a\u8fd9\u91cc\u6211\u4eec\u8981\u7528 where\u6807\u7b7e\n                        where\u597d\u5904\uff1a\n                            1\u3001\u81ea\u52a8\u6dfb\u52a0where\u5173\u952e\u5b57 where\u5185\u90e8\u6709\u4efb\u4f55\u4e00\u4e2aif\u6ee1\u8db3\uff0c\u5c31\u81ea\u52a8\u6dfb\u52a0where\u5173\u952e\u5b57\uff0c\u5426\u5219\u53bb\u6389\n                            2\u3001\u81ea\u52a8\u53bb\u6389\u591a\u4f59\u7684and \u548cor\n--&gt;\n\n    &lt;select id=&quot;query&quot; resultType=&quot;employee&quot;&gt;\n        select * from t_emp\n        &lt;where&gt;\n            &lt;if test=&quot;name!=null&quot;&gt;\n                emp_name = #{name}\n            &lt;\/if&gt;\n            &lt;if test=&quot;salary !=null and  salary &gt;100 &quot;&gt;\n                and emp_salary =#{salary}\n            &lt;\/if&gt;\n        &lt;\/where&gt;\n    &lt;\/select&gt;\n\n&lt;\/mapper&gt;<\/code><\/pre>\n<p>4\u3001\u51c6\u5907mybatis-config.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;\n&lt;!DOCTYPE configuration\n        PUBLIC &quot;-\/\/mybatis.org\/\/DTD Config 3.0\/\/EN&quot;\n        &quot;http:\/\/mybatis.org\/dtd\/mybatis-3-config.dtd&quot;&gt;\n&lt;configuration&gt;\n&lt;!--    \u8ba9mybatis\u5f00\u542f\u65e5\u5fd7\u8f93\u51fa--&gt;\n    &lt;settings&gt;\n&lt;!--        \u8fd9\u91cc\u8bbe\u7f6e\u7684\u662f\u9009\u62e9\u7528system\u8fdb\u884c\u65e5\u5fd7\u8f93\u51fa--&gt;\n        &lt;setting name=&quot;logImpl&quot; value=&quot;STDOUT_LOGGING&quot;\/&gt;\n\n&lt;!--        \u5f00\u542f\u9a7c\u5cf0\u5f0f\u81ea\u52a8\u6620\u5c04--&gt;\n        &lt;setting name=&quot;mapUnderscoreToCamelCase&quot; value=&quot;true&quot;\/&gt;\n\n        &lt;!--\u5f00\u542fresultMap\u81ea\u52a8\u6620\u5c04 --&gt;\n        &lt;setting name=&quot;autoMappingBehavior&quot; value=&quot;FULL&quot;\/&gt;\n    &lt;\/settings&gt;\n\n&lt;!--    \u5b9a\u4e49\u81ea\u5df1\u7c7b\u7684\u522b\u540d--&gt;\n    &lt;typeAliases&gt;\n&lt;!--        \u5355\u72ec\u5b9a\u4e49--&gt;\n&lt;!--        &lt;typeAlias type=&quot;com.atgui.pojo.Employee&quot; alias=&quot;suibian&quot;\/&gt;--&gt;\n&lt;!--        \u6279\u91cf\u5b9a\u4e49--&gt;\n        &lt;package name=&quot;com.atgui.pojo&quot;\/&gt;\n    &lt;\/typeAliases&gt;\n\n    &lt;!-- environments\u8868\u793a\u914d\u7f6eMybatis\u7684\u5f00\u53d1\u73af\u5883\uff0c\u53ef\u4ee5\u914d\u7f6e\u591a\u4e2a\u73af\u5883\uff0c\u5728\u4f17\u591a\u5177\u4f53\u73af\u5883\u4e2d\uff0c\u4f7f\u7528default\u5c5e\u6027\u6307\u5b9a\u5b9e\u9645\u8fd0\u884c\u65f6\u4f7f\u7528\u7684\u73af\u5883\u3002default\u5c5e\u6027\u7684\u53d6\u503c\u662fenvironment\u6807\u7b7e\u7684id\u5c5e\u6027\u7684\u503c\u3002 --&gt;\n    &lt;environments default=&quot;development&quot;&gt;\n        &lt;!-- environment\u8868\u793a\u914d\u7f6eMybatis\u7684\u4e00\u4e2a\u5177\u4f53\u7684\u73af\u5883 --&gt;\n        &lt;environment id=&quot;development&quot;&gt;\n            &lt;!-- Mybatis\u7684\u5185\u7f6e\u7684\u4e8b\u52a1\u7ba1\u7406\u5668 --&gt;\n            &lt;transactionManager type=&quot;JDBC&quot;\/&gt;\n            &lt;!-- \u914d\u7f6e\u6570\u636e\u6e90 --&gt;\n            &lt;dataSource type=&quot;POOLED&quot;&gt;\n                &lt;!-- \u5efa\u7acb\u6570\u636e\u5e93\u8fde\u63a5\u7684\u5177\u4f53\u4fe1\u606f --&gt;\n                &lt;property name=&quot;driver&quot; value=&quot;com.mysql.cj.jdbc.Driver&quot;\/&gt;\n                &lt;property name=&quot;url&quot; value=&quot;jdbc:mysql:\/\/localhost:3306\/mybatis-example&quot;\/&gt;\n                &lt;property name=&quot;username&quot; value=&quot;root&quot;\/&gt;\n                &lt;property name=&quot;password&quot; value=&quot;root&quot;\/&gt;\n            &lt;\/dataSource&gt;\n        &lt;\/environment&gt;\n    &lt;\/environments&gt;\n\n    &lt;mappers&gt;\n        &lt;!-- Mapper\u6ce8\u518c\uff1a\u6307\u5b9aMybatis\u6620\u5c04\u6587\u4ef6\u7684\u5177\u4f53\u4f4d\u7f6e --&gt;\n        &lt;!-- mapper\u6807\u7b7e\uff1a\u914d\u7f6e\u4e00\u4e2a\u5177\u4f53\u7684Mapper\u6620\u5c04\u6587\u4ef6 --&gt;\n        &lt;!-- resource\u5c5e\u6027\uff1a\u6307\u5b9aMapper\u6620\u5c04\u6587\u4ef6\u7684\u5b9e\u9645\u5b58\u50a8\u4f4d\u7f6e\uff0c\u8fd9\u91cc\u9700\u8981\u4f7f\u7528\u4e00\u4e2a\u4ee5\u7c7b\u8def\u5f84\u6839\u76ee\u5f55\u4e3a\u57fa\u51c6\u7684\u76f8\u5bf9\u8def\u5f84 --&gt;\n        &lt;!--    \u5bf9Maven\u5de5\u7a0b\u7684\u76ee\u5f55\u7ed3\u6784\u6765\u8bf4\uff0cresources\u76ee\u5f55\u4e0b\u7684\u5185\u5bb9\u4f1a\u76f4\u63a5\u653e\u5165\u7c7b\u8def\u5f84\uff0c\u6240\u4ee5\u8fd9\u91cc\u6211\u4eec\u53ef\u4ee5\u4ee5resources\u76ee\u5f55\u4e3a\u57fa\u51c6 --&gt;\n        &lt;mapper resource=&quot;mappers\/EmployeeMapper.xml&quot;\/&gt;\n\n    &lt;\/mappers&gt;\n\n&lt;\/configuration&gt;<\/code><\/pre>\n<p>5\u3001\u6d4b\u8bd5<\/p>\n<pre><code class=\"language-java\">package com.atgui;\n\nimport com.atgui.mapper.EmployeeMapper;\nimport com.atgui.pojo.Employee;\nimport org.apache.ibatis.io.Resources;\nimport org.apache.ibatis.session.SqlSession;\nimport org.apache.ibatis.session.SqlSessionFactory;\nimport org.apache.ibatis.session.SqlSessionFactoryBuilder;\nimport org.junit.jupiter.api.AfterEach;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.List;\n\npublic class mybatisTest {\n    private SqlSession sqlSession;\n\n    \/\/    \u6bcf\u6b21\u6d4b\u8bd5\u65b9\u6cd5\u6267\u884c\u524d\u90fd\u4f1a\u6267\u884c\u8be5\u4ee3\u7801\n    @BeforeEach\n    public void before() throws IOException {\n        InputStream inputStream = Resources.getResourceAsStream(&quot;mybatis-config.xml&quot;);\n        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);\n        sqlSession = sqlSessionFactory.openSession(true);\n    }\n\n    \/\/\u6bcf\u6b21\u6d4b\u8bd5\u65b9\u6cd5\u6267\u884c\u540e\u90fd\u4f1a\u6267\u884c\u8be5\u4ee3\u7801\n    @AfterEach\n    public void clean(){\n        sqlSession.close();\n    }\n\n    @Test\n    public void  test1(){\n        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);\n        List&lt;Employee&gt; list =  employeeMapper.query(null,100.0);\n        System.out.println(&quot;list = &quot; + list);\n    }\n}<\/code><\/pre>\n<h2>3\u3001set\u6807\u7b7e<\/h2>\n<h3>1\u3001\u4f5c\u7528<\/h3>\n<p>1\u3001 \u4f7f\u7528set\u6807\u7b7e\u52a8\u6001\u7ba1\u7406set\u5b50\u53e5\uff0c\u5e76\u4e14\u52a8\u6001\u53bb\u6389\u4e24\u7aef\u591a\u4f59\u7684\u9017\u53f7<\/p>\n<p>2\u3001\u4f1a\u81ea\u52a8\u6dfb\u52a0set\u5173\u952e\u5b57<\/p>\n<h3>2\u3001\u4f8b\u5b50<\/h3>\n<p>1\u3001\u4ee3\u7801<\/p>\n<pre><code class=\"language-xml\"> &lt;update id=&quot;update&quot;&gt;\n        update t_emp\n&lt;!--        set\u4f5c\u7528\uff1a\n                1\u3001\u81ea\u52a8\u53bb\u6389\u591a\u4f59\u7684\uff0c\n                2\u3001\u81ea\u52a8\u6dfb\u52a0set\u5173\u952e\u5b57\n--&gt;\n        &lt;set&gt;\n            &lt;if test=&quot;empName!=null&quot;&gt;\n                emp_name = #{empName},\n            &lt;\/if&gt;\n            &lt;if test=&quot;empSalary !=null&quot;&gt;\n                emp_salary = #{empSalary},\n            &lt;\/if&gt;\n        &lt;\/set&gt;\n    &lt;\/update&gt;<\/code><\/pre>\n<h2>4\u3001trim\u6807\u7b7e\uff08\u4e86\u89e3\uff09<\/h2>\n<h3>1\u3001\u4f5c\u7528<\/h3>\n<p>1\u3001\u76ee\u524d\u7684\u4f5c\u7528\u662f\u6765\u66ff\u4ee3where\u8bed\u53e5<\/p>\n<p>2\u3001\u53ef\u4ee5\u63a7\u5236\u6761\u4ef6\u90e8\u5206\u4e24\u7aef\u662f\u5426\u5305\u542b\u67d0\u4e9b\u5b57\u7b26\u4e32<\/p>\n<h3>2\u3001\u5c5e\u6027<\/h3>\n<ul>\n<li>prefix\u5c5e\u6027\uff1a\u6307\u5b9a\u8981\u52a8\u6001\u6dfb\u52a0\u7684\u524d\u7f00<\/li>\n<li>suffix\u5c5e\u6027\uff1a\u6307\u5b9a\u8981\u52a8\u6001\u6dfb\u52a0\u7684\u540e\u7f00<\/li>\n<li>prefixOverrides\u5c5e\u6027\uff1a\u6307\u5b9a\u8981\u52a8\u6001\u53bb\u6389\u7684\u524d\u7f00\uff0c\u4f7f\u7528\u201c|\u201d\u5206\u9694\u6709\u53ef\u80fd\u7684\u591a\u4e2a\u503c<\/li>\n<li>suffixOverrides\u5c5e\u6027\uff1a\u6307\u5b9a\u8981\u52a8\u6001\u53bb\u6389\u7684\u540e\u7f00\uff0c\u4f7f\u7528\u201c|\u201d\u5206\u9694\u6709\u53ef\u80fd\u7684\u591a\u4e2a\u503c<\/li>\n<\/ul>\n<h3>3\u3001\u4f8b\u5b50<\/h3>\n<pre><code class=\"language-xml\">&lt;!-- List&lt;Employee&gt; selectEmployeeByConditionByTrim(Employee employee) --&gt;\n&lt;select id=&quot;selectEmployeeByConditionByTrim&quot; resultType=&quot;com.atguigu.mybatis.entity.Employee&quot;&gt;\n    select emp_id,emp_name,emp_age,emp_salary,emp_gender\n    from t_emp\n\n    &lt;!-- prefix\u5c5e\u6027\u6307\u5b9a\u8981\u52a8\u6001\u6dfb\u52a0\u7684\u524d\u7f00 --&gt;\n    &lt;!-- suffix\u5c5e\u6027\u6307\u5b9a\u8981\u52a8\u6001\u6dfb\u52a0\u7684\u540e\u7f00 --&gt;\n    &lt;!-- prefixOverrides\u5c5e\u6027\u6307\u5b9a\u8981\u52a8\u6001\u53bb\u6389\u7684\u524d\u7f00\uff0c\u4f7f\u7528\u201c|\u201d\u5206\u9694\u6709\u53ef\u80fd\u7684\u591a\u4e2a\u503c --&gt;\n    &lt;!-- suffixOverrides\u5c5e\u6027\u6307\u5b9a\u8981\u52a8\u6001\u53bb\u6389\u7684\u540e\u7f00\uff0c\u4f7f\u7528\u201c|\u201d\u5206\u9694\u6709\u53ef\u80fd\u7684\u591a\u4e2a\u503c --&gt;\n    &lt;!-- \u5f53\u524d\u4f8b\u5b50\u7528where\u6807\u7b7e\u5b9e\u73b0\u66f4\u7b80\u6d01\uff0c\u4f46\u662ftrim\u6807\u7b7e\u66f4\u7075\u6d3b\uff0c\u53ef\u4ee5\u7528\u5728\u4efb\u4f55\u6709\u9700\u8981\u7684\u5730\u65b9 --&gt;\n    &lt;trim prefix=&quot;where&quot; suffixOverrides=&quot;and|or&quot;&gt;\n        &lt;if test=&quot;empName != null&quot;&gt;\n            emp_name=#{empName} and\n        &lt;\/if&gt;\n        &lt;if test=&quot;empSalary &gt; 3000&quot;&gt;\n            emp_salary&gt;#{empSalary} and\n        &lt;\/if&gt;\n        &lt;if test=&quot;empAge &lt;= 20&quot;&gt;\n            emp_age=#{empAge} or\n        &lt;\/if&gt;\n        &lt;if test=&quot;empGender==&#039;male&#039;&quot;&gt;\n            emp_gender=#{empGender}\n        &lt;\/if&gt;\n    &lt;\/trim&gt;\n&lt;\/select&gt;<\/code><\/pre>\n<h2>5\u3001choose\/when\/otherwise\u6807\u7b7e<\/h2>\n<h3>1\u3001\u4f5c\u7528<\/h3>\n<p>1\u3001\u5728\u591a\u5206\u652f\u6761\u4ef6\u4e0a\uff0c\u4ec5\u6267\u884c\u4e00\u4e2a<\/p>\n<ul>\n<li>\u4ece\u4e0a\u5230\u4e0b\u4f9d\u6b21\u6267\u884c\u6761\u4ef6\u5224\u65ad<\/li>\n<li>\u9047\u5230\u7684\u7b2c\u4e00\u4e2a\u6ee1\u8db3\u6761\u4ef6\u7684\u5206\u652f\u4f1a\u88ab\u91c7\u7eb3<\/li>\n<li>\u88ab\u91c7\u7eb3\u5206\u652f\u540e\u9762\u7684\u5206\u652f\u90fd\u5c06\u4e0d\u88ab\u8003\u8651<\/li>\n<li>\u5982\u679c\u6240\u6709\u7684when\u5206\u652f\u90fd\u4e0d\u6ee1\u8db3\uff0c\u90a3\u4e48\u5c31\u6267\u884cotherwise\u5206\u652f<\/li>\n<\/ul>\n<h3>2\u3001\u4f8b\u5b50<\/h3>\n<pre><code class=\"language-xml\">&lt;select id=&quot;selectEmployeeByConditionByChoose&quot; resultType=&quot;employee&quot;&gt;\n        select emp_id ,emp_name,emp_salary\n        from t_emp\n        where\n        &lt;choose&gt;\n            &lt;when test=&quot;enpName != null&quot;&gt;\n                emp_name =#{empName}\n            &lt;\/when&gt;\n        &lt;\/choose&gt;\n    &lt;\/select&gt;<\/code><\/pre>\n<h2>6\u3001foreach\u6807\u7b7e<\/h2>\n<h3>1\u3001\u57fa\u672c\u7528\u6cd5<\/h3>\n<p>1\u3001\u5c5e\u6027<\/p>\n<ul>\n<li>1\u3001collection\uff1a\u8981\u904d\u5386\u7684\u96c6\u5408<\/li>\n<li>2\u3001open\uff1a\u904d\u5386\u4e4b\u524d\u8ffd\u52a0\u7684\u5b57\u7b26\u4e32<\/li>\n<li>3\u3001close\uff1a\u904d\u5386\u7ed3\u675f\u9700\u8981\u6dfb\u52a0\u7684\u5b57\u7b26\u4e32<\/li>\n<li>4\u3001separator\uff1a\u6bcf\u6b21\u904d\u5386\u7684\u5206\u5272\u7b26\u53f7\uff0c\u5982\u679c\u662f\u6700\u540e\u4e00\u6b21\uff0c\u4e0d\u4f1a\u8ffd\u52a0<\/li>\n<li>5\u3001item\uff1a\u83b7\u53d6\u6bcf\u4e2a\u904d\u5386\u9879<\/li>\n<\/ul>\n<p>2\u3001\u5c31\u662f\u627e\u89c4\u5f8b\uff0c\u770bsql\u8bed\u53e5\u54ea\u4e9b\u80fd\u591f\u7528foreach\u5957\u7528\u7136\u540e\u904d\u5386<\/p>\n<h3>2\u3001\u6ce8\u610f<\/h3>\n<p>1\u3001\u5982\u679c\u90fd\u6ca1\u6709\u89c4\u5f8b\uff0c\u5c31\u628a\u6574\u4e2asql\u8bed\u53e5\u5305\u88f9\u8d77\u6765\uff0c\u6574\u4f53\u5faa\u73af<\/p>\n<p>2\u3001\u6709\u4e2a\u524d\u63d0\uff1a\u9700\u8981\u5f00\u542f\u6279\u91cfsql\u8bed\u53e5\u6267\u884c\u7684\u8bed\u53e5<\/p>\n<p>3\u3001\u4fee\u6539jdbc\u914d\u7f6e<\/p>\n<pre><code class=\"language-xml\"> &lt;!-- \u914d\u7f6e\u6570\u636e\u6e90 --&gt;\n            &lt;dataSource type=&quot;POOLED&quot;&gt;\n                &lt;!-- \u5efa\u7acb\u6570\u636e\u5e93\u8fde\u63a5\u7684\u5177\u4f53\u4fe1\u606f --&gt;\n                &lt;property name=&quot;driver&quot; value=&quot;com.mysql.cj.jdbc.Driver&quot;\/&gt;\n                &lt;property name=&quot;url&quot; value=&quot;jdbc:mysql:\/\/localhost:3306\/mybatis-example?allowMultiQueries=true&quot;\/&gt;\n                &lt;property name=&quot;username&quot; value=&quot;root&quot;\/&gt;\n                &lt;property name=&quot;password&quot; value=&quot;root&quot;\/&gt;\n            &lt;\/dataSource&gt;<\/code><\/pre>\n<p>4\u3001\u8fd8\u6709\u5c31\u662fcollection\u5c5e\u6027\u3002\u5efa\u8bae\u7528@Param\u6ce8\u89e3\u6307\u5b9a\u4e00\u4e2a\u5177\u4f53\u540d\u5b57\u3002\u5426\u5219\u96be\u7406\u89e3<\/p>\n<p>5\u3001\u5728\u5b9e\u9645\u5f00\u53d1\u4e2d\uff0c\u4e3a\u4e86\u907f\u514d\u9690\u6666\u7684\u8868\u8fbe\u9020\u6210\u4e00\u5b9a\u7684\u8bef\u4f1a\uff0c\u5efa\u8bae\u4f7f\u7528@Param\u6ce8\u89e3\u660e\u786e\u58f0\u660e\u53d8\u91cf\u7684\u540d\u79f0\uff0c\u7136\u540e\u5728foreach\u6807\u7b7e\u7684collection\u5c5e\u6027\u4e2d\u6309\u7167@Param\u6ce8\u89e3\u6307\u5b9a\u7684\u540d\u79f0\u6765\u5f15\u7528\u4f20\u5165\u7684\u53c2\u6570\u3002<\/p>\n<h3>3\u3001\u4f8b\u5b50<\/h3>\n<p>1\u3001mapper\u63a5\u53e3\u6587\u4ef6<\/p>\n<pre><code class=\"language-java\">\/\/    \u6839\u636eid\u7684\u6279\u91cf\u67e5\u8be2\n    List&lt;Employee&gt; queryBatch(@Param(&quot;ids&quot;) List&lt;Integer&gt; ids);\n\/\/    \u6839\u636eid\u7684\u6279\u91cf\u5220\u9664\n    int deleteBatch(@Param(&quot;ids&quot;) List&lt;Integer&gt; ids);\n\/\/    \u6279\u91cf\u6dfb\u52a0\n    int insertBatch(@Param(&quot;list&quot;) List&lt;Employee&gt; employeeList);\n\/\/    \u6279\u91cf\u4fee\u6539\n    int updateBatch(@Param(&quot;list&quot;) List&lt;Employee&gt; employeeList);<\/code><\/pre>\n<p>2\u3001sql\u8bed\u53e5<\/p>\n<pre><code class=\"language-xml\">&lt;!--    List&lt;Employee&gt; queryBatch(@Param(&quot;ids&quot;) List&lt;Integer&gt; ids);--&gt;\n    &lt;select id=&quot;queryBatch&quot; resultType=&quot;employee&quot;&gt;\n        select * from t_emp\n            where emp_id in\n            &lt;foreach collection=&quot;ids&quot; open=&quot;(&quot;  separator=&quot;,&quot; close=&quot;)&quot; item=&quot;id&quot;&gt;\n                #{id}\n            &lt;\/foreach&gt;\n    &lt;\/select&gt;\n\n&lt;!--    int deleteBatch(@Param(&quot;ids&quot;) List&lt;Integer&gt; ids);--&gt;\n    &lt;delete id=&quot;deleteBatch&quot;&gt;\n        delete from t_emp where id in\n        &lt;foreach collection=&quot;ids&quot; open=&quot;(&quot; close=&quot;)&quot; item=&quot;id&quot;&gt;\n            #{id}\n        &lt;\/foreach&gt;\n    &lt;\/delete&gt;\n\n&lt;!--    int insertBatch(@Param(&quot;list&quot;) List&lt;Employee&gt; employeeList);--&gt;\n    &lt;insert id=&quot;insertBatch&quot;&gt;\n        insert into t_emp (emp_name,emp_salary)\n        values\n        &lt;foreach collection=&quot;list&quot; separator=&quot;,&quot; item=&quot;employee&quot;&gt;\n            (#{employee.empName),#{employee.empSalary})\n        &lt;\/foreach&gt;\n    &lt;\/insert&gt;\n\n&lt;!--    int updateBatch(@Param(&quot;list&quot;) List&lt;Employee&gt; employeeList);--&gt;\n    &lt;update id=&quot;updateBatch&quot;&gt;\n        &lt;foreach collection=&quot;list&quot; item=&quot;emp&quot;&gt;\n            update t_emp set emp_name =#{emp.empName},emp_salary = #{emp.Salary}\n            where emp_id = #{emp.empId)\n        &lt;\/foreach&gt;\n    &lt;\/update&gt;<\/code><\/pre>\n<h2>7\u3001sql\u7247\u6bb5<\/h2>\n<h3>1\u3001\u4f5c\u7528<\/h3>\n<p>1\u3001\u62bd\u53d6\u91cd\u590d\u7684sql\u7247\u6bb5\uff08\u7c7b\u4f3c\u5c01\u88c5\uff09<\/p>\n<p>2\u3001\u7528\u5230\\<sql>\u6807\u7b7e<\/p>\n<p>3\u3001\\<include refid=\"\">\u6807\u7b7e<\/p>\n<h3>2\u3001\u4f8b\u5b50<\/h3>\n<p>1\u3001sql\u8bed\u53e5<\/p>\n<pre><code class=\"language-xml\">&lt;!--    List&lt;Employee&gt; queryBatch(@Param(&quot;ids&quot;) List&lt;Integer&gt; ids);--&gt;\n\n    &lt;sql id=&quot;queryBatch11&quot;&gt;\n        select * from t_emp\n    &lt;\/sql&gt;\n\n    &lt;select id=&quot;queryBatch1&quot; resultType=&quot;employee&quot;&gt;\n        &lt;include refid=&quot;queryBatch11&quot;&gt;&lt;\/include&gt;\n        where emp_id in\n        &lt;foreach collection=&quot;ids&quot; open=&quot;(&quot;  separator=&quot;,&quot; close=&quot;)&quot; item=&quot;id&quot;&gt;\n            #{id}\n        &lt;\/foreach&gt;\n    &lt;\/select&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u56db\u3001MyBatis\u52a8\u6001\u8bed\u53e5 1\u3001\u52a8\u6001\u8bed\u53e5\u9700\u6c42\u548c\u7b80\u4ecb 1\u3001\u9700\u6c42 1\u3001\u5e94\u5bf9\u591a\u4e2a\u6761\u4ef6\u67e5\u8be2\u3002 2\u3001\u6709\u5f88\u591a\u6761\u4ef6\u4e0d\u6ee1\u8db3\u7684\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-5810","post","type-post","status-publish","format-standard","hentry","category-mybatis"],"_links":{"self":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/comments?post=5810"}],"version-history":[{"count":1,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5810\/revisions"}],"predecessor-version":[{"id":5811,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5810\/revisions\/5811"}],"wp:attachment":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/media?parent=5810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/categories?post=5810"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/tags?post=5810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}