mybatis 使用经验小结,batch批量提交大量数据

<div id="article_content" class="article_content csdn-tracking-statistics tracking-click" data-mod="popu_519" data-dsm="post" style="overflow: hidden;">
                            <div class="htmledit_views">
                        
<div id="cnblogs_post_body" style="margin:0px 0px 20px;padding:0px;color:rgb(69,69,69);font-family:verdana, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.200000762939453px;">
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;">一、多数据源问题</span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">主要思路是把dataSource、sqlSesstionFactory、MapperScannerConfigurer在配置中区分开,各Mapper对应的包名、类名区分开</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;?</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,255);">xml version="1.0" encoding="UTF-8"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">?&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">beans </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">xmlns</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="http://www.springframework.org/schema/beans"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">       xmlns:xsi</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> xmlns:aop</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="http://www.springframework.org/schema/aop"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">       xmlns:tx</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="http://www.springframework.org/schema/tx"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> xmlns:jdbc</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="http://www.springframework.org/schema/jdbc"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">       xmlns:context</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="http://www.springframework.org/schema/context"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">       xsi:schemaLocation</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">       default-autowire</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="byName"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dataSource1"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.h2.jdbcx.JdbcConnectionPool"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">          destroy-method</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dispose"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">16</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">constructor-arg</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">17</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.h2.jdbcx.JdbcDataSource"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">18</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="URL"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="jdbc:h2:r:/h2db/awbprint/a"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">19</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="user"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sa"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">20</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="password"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sa"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">21</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">22</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">constructor-arg</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">23</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">24</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">25</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">26</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dataSource2"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.h2.jdbcx.JdbcConnectionPool"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">27</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">          destroy-method</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dispose"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">28</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">constructor-arg</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">29</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.h2.jdbcx.JdbcDataSource"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">30</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="URL"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="jdbc:h2:r:/h2db/awbprint/b"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">31</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="user"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sa"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">32</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="password"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sa"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">33</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">34</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">constructor-arg</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">35</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">36</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">37</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sqlSessionFactory1"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.mybatis.spring.SqlSessionFactoryBean"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">38</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dataSource"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> ref</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dataSource1"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">39</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="configLocation"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="classpath:mybatis-config.xml"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">40</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="typeAliasesPackage"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="awbprint.mybatis.entity"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">41</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="mapperLocations"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="classpath:mybatis/a/**/*.xml"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">42</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">43</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">44</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sqlSessionFactory2"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.mybatis.spring.SqlSessionFactoryBean"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">45</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dataSource"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> ref</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="dataSource2"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">46</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="configLocation"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="classpath:mybatis-config.xml"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">47</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="typeAliasesPackage"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="awbprint.mybatis.entity"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">48</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="mapperLocations"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="classpath:mybatis/b/**/*.xml"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">49</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">50</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">51</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.mybatis.spring.mapper.MapperScannerConfigurer"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">52</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sqlSessionFactoryBeanName"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sqlSessionFactory1"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">53</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="basePackage"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="awbprint.mybatis.mapper.a"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">54</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">55</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">56</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">class</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="org.mybatis.spring.mapper.MapperScannerConfigurer"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">57</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sqlSessionFactoryBeanName"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="sqlSessionFactory2"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">58</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">property </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="basePackage"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> value</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="awbprint.mybatis.mapper.b"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">59</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">bean</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">60</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">61</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">62</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">beans</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">上面的配置,一个连h2的a数据库,一个连h2的b数据库,至于事务管理器,大家可参考这个思路,建二个,各管各的。</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">项目中mapper接口及映射文件均用包名区分开,如下图:</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><img src="http://images.cnitblog.com/blog/27612/201501/292250045345255.jpg" alt="" style="margin:0px;padding:0px;border:0px;"></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;">二、如何使用Map做为参数及动态条件生成</span></p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">resultMap </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="BaseResultMap"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> type</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="awbprint.mybatis.entity.PrintLayout"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">id </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">column</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="D_RECID"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="recid"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> jdbcType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="DECIMAL"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">result </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">column</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="D_USER_NAME"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="userName"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> jdbcType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="VARCHAR"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">result </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">column</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="D_NAME"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="name"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> jdbcType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="VARCHAR"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">result </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">column</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="D_TYPE"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> property</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="type"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> jdbcType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="VARCHAR"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span> <span style="margin:0px;padding:0px;line-height:1.8;">        ...
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>        
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">resultMap</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>    <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">sql </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="Base_Column_List"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span> <span style="margin:0px;padding:0px;line-height:1.8;">        D_RECID, D_USER_NAME, D_NAME, D_TYPE, ...
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">sql</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">select </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="select"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> resultMap</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="BaseResultMap"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">            parameterType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="java.util.Map"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">16</span> <span style="margin:0px;padding:0px;line-height:1.8;">        select
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">17</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">include </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">refid</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="Base_Column_List"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">18</span> <span style="margin:0px;padding:0px;line-height:1.8;">        from T_PRINT_LAYOUT
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">19</span> <span style="margin:0px;padding:0px;line-height:1.8;">        where D_USER_NAME = #{userName,jdbcType=VARCHAR} and D_TYPE = #{awbType,jdbcType=VARCHAR}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">20</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">if </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">test</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="recId != null"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">21</span> <span style="margin:0px;padding:0px;line-height:1.8;">            and D_RECID = #{recId,jdbcType=DECIMAL}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">22</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">if</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">23</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">if </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">test</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="ids != null"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">24</span> <span style="margin:0px;padding:0px;line-height:1.8;">            or D_RECID in
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">25</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">item</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="item"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> index</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="index"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> collection</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="ids"</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">26</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">                     open</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="("</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> separator</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">=","</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> close</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">=")"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">27</span> <span style="margin:0px;padding:0px;line-height:1.8;">                #{item}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">28</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">29</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">if</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">30</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">31</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">select</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">14-31演示了如何使用Map做为参数,动态传入查询条件,及List参数生成in(...)条件</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">java端代码示例:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span>         PrintLayoutMapper mapper = context.getBean(PrintLayoutMapper.<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">class</span><span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>         
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>         Map&lt;String, Object&gt; map = <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">new</span> HashMap&lt;String, Object&gt;<span style="margin:0px;padding:0px;line-height:1.8;">();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span>         map.put("userName", "ADMIN"<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>         map.put("awbType", "CARGOLABEL_MU"<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span>         map.put("recId", 1<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>         
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>         List&lt;Integer&gt; ids = <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">new</span> ArrayList&lt;Integer&gt;<span style="margin:0px;padding:0px;line-height:1.8;">();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>         ids.add(0, 1<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>         ids.add(0, 2<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>         ids.add(0, 3<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>         
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span>         map.put("ids"<span style="margin:0px;padding:0px;line-height:1.8;">, ids);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span>         List&lt;?&gt; list = mapper.select(map);</pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">其实PrintLayoutMapper接口的定义为:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">public</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">interface</span><span style="margin:0px;padding:0px;line-height:1.8;"> PrintLayoutMapper {    
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">2</span> <span style="margin:0px;padding:0px;line-height:1.8;">    ...
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">3</span>     
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">4</span>     List&lt;PrintLayout&gt; select(Map&lt;String, Object&gt;<span style="margin:0px;padding:0px;line-height:1.8;"> map);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">5</span> }</pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">最终生成的SQL语句为:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> D_RECID, D_USER_NAME, D_NAME, D_TYPE, ... <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">from</span> T_PRINT_LAYOUT <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span> D_USER_NAME <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> ? <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">and</span> D_TYPE <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> ? <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">and</span> D_RECID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> ? <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">or</span> D_RECID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">in</span> ( ? , ? , ? )</pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;">三、兼容不同的数据库</span></p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">insert</span> id<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">insert</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span>selectKey keyProperty<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"id" resultType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span>" <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">order</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"BEFORE"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span> test<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"_databaseId <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">==</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">oracle</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> seq_users.nextval <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">from</span><span style="margin:0px;padding:0px;line-height:1.8;"> dual
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span> test<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"_databaseId <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">==</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">db2</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> nextval <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">for</span> seq_users <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">from</span><span style="margin:0px;padding:0px;line-height:1.8;"> sysibm.sysdummy1"
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span>selectKey<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">insert</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">into</span> users <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">values</span><span style="margin:0px;padding:0px;line-height:1.8;"> (#{id}, #{name})
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">insert</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">这是官方文档上的示例,演示了如何兼容oracle与db2这二种不同的数据库,来获取序列的下一个值</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;">四、加强版的分支、选择判断</span></p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> id<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;">"findActiveBlogLike"
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>  resultType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"Blog"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span> BLOG <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">WHERE</span> state <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;"> ‘ACTIVE’
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span>choose<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">when</span> test<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"title <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">!=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">AND</span> title <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">like</span><span style="margin:0px;padding:0px;line-height:1.8;"> #{title}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">when</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">when</span> test<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"author <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">!=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">and</span> author.name <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">!=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">AND</span> author_name <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">like</span><span style="margin:0px;padding:0px;line-height:1.8;"> #{author.name}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">when</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span>otherwise<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">AND</span> featured <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);"><strong>1</strong></span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span>otherwise<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span>choose<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">这也是官方文档上的示例,因为&lt;if&gt;...&lt;/if&gt;并没对应的&lt;else&gt;标签,所以要达到&lt;if&gt;...&lt;else&gt;...&lt;/else&gt; &lt;/if&gt;的效果,得借助&lt;choose&gt;、&lt;when&gt;、&lt;otherwise&gt;组合使用。</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;">五、避免Where 空条件的尴尬</span></p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> id<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"findActiveBlogLike" resultType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"Blog"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">2</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> BLOG
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">3</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">WHERE</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">4</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span> test<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"state <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">!=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">5</span>  state <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;"> #{state}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">6</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">7</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">如果state参数为空时,最终生成SQL语句为&nbsp;</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> BLOG
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">2</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">WHERE</span></pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">执行会出错,当然,你可以在where 后加一个1=1,改成</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> id<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"findActiveBlogLike" resultType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"Blog"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">2</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> BLOG
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">3</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">WHERE</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);"><strong>1</strong></span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);"><strong>1</strong></span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">4</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span> test<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"state <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">!=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">5</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">and</span> state <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;"> #{state}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">6</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">7</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">但是这个做法不太“环保”(毕竟引入了一个垃圾条件),其实只要改成&lt;where&gt;...&lt;/where&gt;即可</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> id<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"findActiveBlogLike" resultType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"Blog"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">2</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> BLOG
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">3</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">4</span>      <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span> test<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"state <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">!=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">5</span>          <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">and</span> state <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;"> #{state}
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">6</span>      <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">7</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">8</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;">六、$与#的区别</span></p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">from</span> T_PRINT_LAYOUT <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span>  D_RECID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> ${recId}</pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">最后生成的SQL为:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">from</span> T_PRINT_LAYOUT <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span>  D_RECID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);"><strong>1</strong></span></pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">即:直接将参数值替换到了原来${recId}的位置,相当于硬拼SQL</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span>  <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">from</span> T_PRINT_LAYOUT <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span>  D_RECID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> #{recid,jdbcType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">DECIMAL</span>}</pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">最后生成的SQL为:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">select</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">from</span> T_PRINT_LAYOUT <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span>  D_RECID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span> ?</pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">即:#{...}被识别为一个SQL参数</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;">七、大量数据的批量insert</span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">大量数据(条数&gt;10000)做insert时,如果按常规方式,每条insert into table(...) values(...);来提交,速度巨慢。改善性能的思路是多条insert批量提交。</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">oracle环境中,有一种批量insert的小技巧,原理是 insert into ... select from ...,套在mybatis上,变形为:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INSERT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span><span style="margin:0px;padding:0px;line-height:1.8;"> T_TEST
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span> <span style="margin:0px;padding:0px;line-height:1.8;">  (ID, COL_A, COL_B)
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> SEQ_TEST.NEXTVAL, A.<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">*</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> (
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>               <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">A1</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">B1</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">UNION</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">ALL</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">A2</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">B2</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">UNION</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">ALL</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">A3</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">B3</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">UNION</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">ALL</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">A4</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">B4</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">UNION</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">ALL</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">A5</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">B5</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">UNION</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">ALL</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">A6</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span>, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">B6</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">'</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>     ) A</pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">中间的部分非常有规律,可以用foreach标签生成,参考下面的片段:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">insert </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="insertBatch2"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> parameterType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="ctas.entity.SharkFlt"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">selectKey </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">keyProperty</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="recId"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> order</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="BEFORE"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> resultType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="Long"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span> <span style="margin:0px;padding:0px;line-height:1.8;">      select SEQ_CTAS_SHARK_FLT.nextval as recId from dual
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">selectKey</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>     insert into CTAS_SHARK_FLT (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">include </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">refid</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="Base_Column_List"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span><span style="margin:0px;padding:0px;line-height:1.8;">) SELECT SEQ_TEST.NEXTVAL, A.*
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span> <span style="margin:0px;padding:0px;line-height:1.8;">    FROM (
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">collection</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="list"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> item</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="item"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> index</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="index"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> open</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">=""</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> close</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">=""</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> separator</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="union all"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span> <span style="margin:0px;padding:0px;line-height:1.8;">      select #{item.awbType,jdbcType=VARCHAR}, #{item.awbPre,jdbcType=VARCHAR},... from dual
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span> <span style="margin:0px;padding:0px;line-height:1.8;">    ) A
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">insert</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">即使这样,也不能直接run,oracle中一次执行的sql语句长度是有限制的,如果最后拼出来的sql字符串过长,会导致执行失败,所以java端还要做一个分段处理,参考下面的处理:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span>         List&lt;SharkFlt&gt; data = <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">new</span> ArrayList&lt;SharkFlt&gt;<span style="margin:0px;padding:0px;line-height:1.8;">();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">for</span><span style="margin:0px;padding:0px;line-height:1.8;"> (TSharkFlt f : sharkFlts) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span> <span style="margin:0px;padding:0px;line-height:1.8;">            data.add(getSharkFlt(f));
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span> <span style="margin:0px;padding:0px;line-height:1.8;">        }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span> <span style="margin:0px;padding:0px;line-height:1.8;">        System.out.println(data.size());
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">long</span> beginTime =<span style="margin:0px;padding:0px;line-height:1.8;"> System.currentTimeMillis();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>         System.out.println("开始插入..."<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>         SqlSessionFactory sqlSessionFactory = ctx.getBean(SqlSessionFactory.<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">class</span><span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>         SqlSession session = <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span><span style="margin:0px;padding:0px;line-height:1.8;">;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">try</span><span style="margin:0px;padding:0px;line-height:1.8;"> {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span>             session = sqlSessionFactory.openSession(ExecutorType.BATCH, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">false</span><span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> a = 2000;<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">//</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">每次提交2000条</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> loop = (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span>) Math.ceil(data.size() / (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">double</span><span style="margin:0px;padding:0px;line-height:1.8;">) a);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">16</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">17</span>             List&lt;SharkFlt&gt; tempList = <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">new</span> ArrayList&lt;SharkFlt&gt;<span style="margin:0px;padding:0px;line-height:1.8;">(a);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">18</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span><span style="margin:0px;padding:0px;line-height:1.8;"> start, stop;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">19</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">for</span> (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> i = 0; i &lt; loop; i++<span style="margin:0px;padding:0px;line-height:1.8;">) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">20</span> <span style="margin:0px;padding:0px;line-height:1.8;">                tempList.clear();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">21</span>                 start = i *<span style="margin:0px;padding:0px;line-height:1.8;"> a;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">22</span>                 stop = Math.min(i * a + a - 1, data.size() - 1<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">23</span>                 System.out.println("range:" + start + " - " +<span style="margin:0px;padding:0px;line-height:1.8;"> stop);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">24</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">for</span> (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> j = start; j &lt;= stop; j++<span style="margin:0px;padding:0px;line-height:1.8;">) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">25</span> <span style="margin:0px;padding:0px;line-height:1.8;">                    tempList.add(data.get(j));
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">26</span> <span style="margin:0px;padding:0px;line-height:1.8;">                }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">27</span>                 session.insert("ctas.importer.writer.mybatis.mappper.SharkFltMapper.insertBatch2"<span style="margin:0px;padding:0px;line-height:1.8;">, tempList);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">28</span> <span style="margin:0px;padding:0px;line-height:1.8;">                session.commit();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">29</span> <span style="margin:0px;padding:0px;line-height:1.8;">                session.clearCache();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">30</span>                 System.out.println("已经插入" + (stop + 1) + " 条"<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">31</span> <span style="margin:0px;padding:0px;line-height:1.8;">            }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">32</span>         } <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">catch</span><span style="margin:0px;padding:0px;line-height:1.8;"> (Exception e) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">33</span> <span style="margin:0px;padding:0px;line-height:1.8;">            e.printStackTrace();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">34</span> <span style="margin:0px;padding:0px;line-height:1.8;">            session.rollback();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">35</span>         } <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">finally</span><span style="margin:0px;padding:0px;line-height:1.8;"> {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">36</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span> (session != <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span><span style="margin:0px;padding:0px;line-height:1.8;">) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">37</span> <span style="margin:0px;padding:0px;line-height:1.8;">                session.close();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">38</span> <span style="margin:0px;padding:0px;line-height:1.8;">            }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">39</span> <span style="margin:0px;padding:0px;line-height:1.8;">        }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">40</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">long</span> endTime =<span style="margin:0px;padding:0px;line-height:1.8;"> System.currentTimeMillis();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">41</span>         System.out.println("插入完成,耗时 " + (endTime - beginTime) + " 毫秒!");</pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">13,27-29这几行是关键,这一段逻辑会经常使用,为了重用,可以封装一下:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">/**</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">     * 批量提交数据
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">     * </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">@param</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);"> sqlSessionFactory
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">     * </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">@param</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);"> mybatisSQLId SQL语句在Mapper XML文件中的ID
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">     * </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">@param</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);"> commitCountEveryTime 每次提交的记录数
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">     * </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">@param</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);"> list 要提交的数据列表
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">     * </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">@param</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);"> logger 日志记录器
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>      <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,0);">*/</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">private</span> &lt;T&gt; <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">void</span> batchCommit(SqlSessionFactory sqlSessionFactory, String mybatisSQLId, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> commitCountEveryTime, List&lt;T&gt;<span style="margin:0px;padding:0px;line-height:1.8;"> list, Logger logger) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>         SqlSession session = <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span><span style="margin:0px;padding:0px;line-height:1.8;">;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">try</span><span style="margin:0px;padding:0px;line-height:1.8;"> {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>             session = sqlSessionFactory.openSession(ExecutorType.BATCH, <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">false</span><span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> commitCount = (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span>) Math.ceil(list.size() / (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">double</span><span style="margin:0px;padding:0px;line-height:1.8;">) commitCountEveryTime);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span>             List&lt;T&gt; tempList = <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">new</span> ArrayList&lt;T&gt;<span style="margin:0px;padding:0px;line-height:1.8;">(commitCountEveryTime);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span><span style="margin:0px;padding:0px;line-height:1.8;"> start, stop;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">16</span>             Long startTime =<span style="margin:0px;padding:0px;line-height:1.8;"> System.currentTimeMillis();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">17</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">for</span> (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> i = 0; i &lt; commitCount; i++<span style="margin:0px;padding:0px;line-height:1.8;">) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">18</span> <span style="margin:0px;padding:0px;line-height:1.8;">                tempList.clear();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">19</span>                 start = i *<span style="margin:0px;padding:0px;line-height:1.8;"> commitCountEveryTime;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">20</span>                 stop = Math.min(i * commitCountEveryTime + commitCountEveryTime - 1, list.size() - 1<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">21</span>                 <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">for</span> (<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">int</span> j = start; j &lt;= stop; j++<span style="margin:0px;padding:0px;line-height:1.8;">) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">22</span> <span style="margin:0px;padding:0px;line-height:1.8;">                    tempList.add(list.get(j));
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">23</span> <span style="margin:0px;padding:0px;line-height:1.8;">                }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">24</span> <span style="margin:0px;padding:0px;line-height:1.8;">                session.insert(mybatisSQLId, tempList);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">25</span> <span style="margin:0px;padding:0px;line-height:1.8;">                session.commit();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">26</span> <span style="margin:0px;padding:0px;line-height:1.8;">                session.clearCache();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">27</span> <span style="margin:0px;padding:0px;line-height:1.8;">            }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">28</span>             Long endTime =<span style="margin:0px;padding:0px;line-height:1.8;"> System.currentTimeMillis();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">29</span>             logger.debug("batchCommit耗时:" + (endTime - startTime) + "毫秒"<span style="margin:0px;padding:0px;line-height:1.8;">);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">30</span>         } <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">catch</span><span style="margin:0px;padding:0px;line-height:1.8;"> (Exception e) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">31</span>             logger.error("batchCommit error!"<span style="margin:0px;padding:0px;line-height:1.8;">, e);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">32</span> <span style="margin:0px;padding:0px;line-height:1.8;">            e.printStackTrace();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">33</span> <span style="margin:0px;padding:0px;line-height:1.8;">            session.rollback();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">34</span>         } <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">finally</span><span style="margin:0px;padding:0px;line-height:1.8;"> {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">35</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">if</span> (session != <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">null</span><span style="margin:0px;padding:0px;line-height:1.8;">) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">36</span> <span style="margin:0px;padding:0px;line-height:1.8;">                session.close();
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">37</span> <span style="margin:0px;padding:0px;line-height:1.8;">            }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">38</span> <span style="margin:0px;padding:0px;line-height:1.8;">        }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">39</span>     }</pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">对应的,如果是批量update,也是类似的思路,只不过要注意一点:oracle环境中,多条语句提交的sql语句为</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);"><span style="margin:0px;padding:0px;">begin</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);"><span style="margin:0px;padding:0px;">  update xxx set xxx =xxx ;</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);"><span style="margin:0px;padding:0px;">  update xxx set xxx =xxx;</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);"><span style="margin:0px;padding:0px;">end;</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">用mytais拼的时候,参考下面的写法:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">update</span> id<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"updateBatch" parameterType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"java.util.List"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">2</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;</span>foreach collection<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"list" item<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"item" <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">index</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">index</span>" <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">open</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">begin</span>" <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">close</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>"<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">end</span>;" <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">3</span>       <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">update</span> xxx <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">set</span> x<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>#{item.x,jdbcType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VARCHAR</span>} <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">where</span> x <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span>#{item.x,jdbcType<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">=</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VARCHAR</span><span style="margin:0px;padding:0px;line-height:1.8;">};
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">4</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span>foreach<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">5</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">update</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,128,128);">&gt;</span></pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">关于批量提交的性能,Oracle环境下,我大概测试了一下:</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);"><span style="margin:0px;padding:0px;">insert into ... select xxx</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);"><span style="margin:0px;padding:0px;">&nbsp; union all select yyy</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);"><span style="margin:0px;padding:0px;">&nbsp; union all select zzz;</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">最快,其次是</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);">begin</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);">&nbsp; insert into ... values &nbsp;...;</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);">&nbsp; insert into ... values ...;</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;"><span style="margin:0px;padding:0px;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(51,102,255);">end;</span></span></p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">当然最慢是逐条insert提交,最后谈下Spring与mybatis集成后,AOP事务管理 对 批量提交的影响 ,通常情况下,我们会这样配置AOP事务管理:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">tx:advice </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="txAdvice"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> transaction-manager</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="transactionManager"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">tx:attributes</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">tx:method </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="do*"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> read-only</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="false"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> rollback-for</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="java.lang.Exception"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">tx:method </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">name</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="*"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> propagation</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="SUPPORTS"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> read-only</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="true"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">tx:attributes</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">tx:advice</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:config</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:pointcut </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="pc"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> expression</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="execution(* ctas.service.*.*(..))"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:advisor </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">pointcut-ref</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="pc"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> advice-ref</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="txAdvice"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:config</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">这样,ctas.service(及子包)下的所有方法都被拦截,而且只有do开头的方法,具有可写的事务(即:能insert/update/delete记录),而其它方法是只读事务(即:只能select数据),但是我们前面谈到的批量提交操作,都是写代码手动提交的,不需要spring管理,所以配置中需要将某些方法排除,可以约定self开头的方法,由开发者自己管理事务,不需要spring代为管理,上面的配置要改成:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">1</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:config</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">2</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:pointcut </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="pc"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> expression</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="execution(* ctas.service.*.*(..)) and !execution(* ctas.service.*.self*(..)))"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">3</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:advisor </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">pointcut-ref</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="pc"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> advice-ref</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="txAdvice"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">/&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">4</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">aop:config</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span></pre>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;通过 and !execution(...) 将self开头的方法排除就可以了,前面的批量操作代码写到selfXXX方法中。</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">关于批量提交,还有一种情况:父子表的批量插入。思路还是一样的,但是SQL的写法有点区别,原理参考下面的语句(Oracle环境)</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">DECLARE</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span>   BASE_ID   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTEGER</span><span style="margin:0px;padding:0px;line-height:1.8;">;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>   DETAIL_ID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTEGER</span><span style="margin:0px;padding:0px;line-height:1.8;">;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">BEGIN</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">--</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">第1组记录</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> SEQ_T_BASE.NEXTVAL <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> BASE_ID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INSERT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> T_BASE (ID, FEE) <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VALUES</span><span style="margin:0px;padding:0px;line-height:1.8;"> (BASE_ID, ?);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>   
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> SEQ_T_DETAIL.NEXTVAL <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> DETAIL_ID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INSERT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> T_DETAIL (ID, BASE_ID, FEE) <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VALUES</span><span style="margin:0px;padding:0px;line-height:1.8;"> (DETAIL_ID, BASE_ID, ?);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> SEQ_T_DETAIL.NEXTVAL <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> DETAIL_ID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INSERT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> T_DETAIL (ID, BASE_ID, FEE) <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VALUES</span><span style="margin:0px;padding:0px;line-height:1.8;"> (DETAIL_ID, BASE_ID, ?);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span>   
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">--</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">第2组记录</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> SEQ_T_BASE.NEXTVAL <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> BASE_ID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">16</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INSERT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> T_BASE (ID, FEE) <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VALUES</span><span style="margin:0px;padding:0px;line-height:1.8;"> (BASE_ID, ?);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">17</span>   
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">18</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> SEQ_T_DETAIL.NEXTVAL <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> DETAIL_ID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">19</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INSERT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> T_DETAIL (ID, BASE_ID, FEE) <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VALUES</span><span style="margin:0px;padding:0px;line-height:1.8;"> (DETAIL_ID, BASE_ID, ?);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">20</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">SELECT</span> SEQ_T_DETAIL.NEXTVAL <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> DETAIL_ID <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">FROM</span><span style="margin:0px;padding:0px;line-height:1.8;"> DUAL;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">21</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INSERT</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">INTO</span> T_DETAIL (ID, BASE_ID, FEE) <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">VALUES</span><span style="margin:0px;padding:0px;line-height:1.8;"> (DETAIL_ID, BASE_ID, ?);
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">22</span>   
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">23</span>   <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">--</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">...</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">24</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">END</span>;</pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">xml映射文件中的写法:</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">insert </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">id</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="insertBatch"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> parameterType</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="java.util.List"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span> <span style="margin:0px;padding:0px;line-height:1.8;">        DECLARE
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span> <span style="margin:0px;padding:0px;line-height:1.8;">        base_id INTEGER ;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span> <span style="margin:0px;padding:0px;line-height:1.8;">        detail_id INTEGER ;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">collection</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="list"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> item</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="item"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> index</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="index"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> open</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="begin"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> close</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="end;"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span> <span style="margin:0px;padding:0px;line-height:1.8;">            select seq_t_base.nextval into base_id from dual;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span> <span style="margin:0px;padding:0px;line-height:1.8;">            insert into t_base(id, fee) values(base_id, #{item.baseEntity.fee,jdbcType=DECIMAL});
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach </span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);">collection</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="item.details"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> item</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="detail"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(255,0,0);"> index</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">="index"</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span> <span style="margin:0px;padding:0px;line-height:1.8;">                select seq_t_detail.nextval into detail_id from dual;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span> <span style="margin:0px;padding:0px;line-height:1.8;">                insert into t_detail(id, base_id, fee) values(detail_id,base_id,#{detail.fee,jdbcType=DECIMAL});
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>             <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">foreach</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span>
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&lt;/</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(128,0,0);">insert</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">&gt;</span></pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;List中的Dto定义</p>
<div class="cnblogs_code" style="margin:5px 0px;padding:5px;border:1px solid rgb(204,204,204);overflow:auto;color:rgb(0,0,0);font-family:'Courier New' !important;font-size:12px !important;background-color:rgb(245,245,245);">
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
<pre style="margin-top:0px;margin-bottom:0px;padding:0px;white-space:pre-wrap;font-family:'Courier New' !important;"><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 1</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">public</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">class</span><span style="margin:0px;padding:0px;line-height:1.8;"> BaseDetailDto {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 2</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 3</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">private</span><span style="margin:0px;padding:0px;line-height:1.8;"> TBase baseEntity;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 4</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 5</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">private</span> List&lt;TDetail&gt;<span style="margin:0px;padding:0px;line-height:1.8;"> details;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 6</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 7</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">public</span><span style="margin:0px;padding:0px;line-height:1.8;"> TBase getBaseEntity() {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 8</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">return</span><span style="margin:0px;padding:0px;line-height:1.8;"> baseEntity;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);"> 9</span> <span style="margin:0px;padding:0px;line-height:1.8;">    }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">10</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">11</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">public</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">void</span><span style="margin:0px;padding:0px;line-height:1.8;"> setBaseEntity(TBase baseEntity) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">12</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">this</span>.baseEntity =<span style="margin:0px;padding:0px;line-height:1.8;"> baseEntity;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">13</span> <span style="margin:0px;padding:0px;line-height:1.8;">    }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">14</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">15</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">16</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">public</span> List&lt;TDetail&gt;<span style="margin:0px;padding:0px;line-height:1.8;"> getDetails() {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">17</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">return</span><span style="margin:0px;padding:0px;line-height:1.8;"> details;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">18</span> <span style="margin:0px;padding:0px;line-height:1.8;">    }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">19</span> 
<span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">20</span>     <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">public</span> <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">void</span> setDetails(List&lt;TDetail&gt;<span style="margin:0px;padding:0px;line-height:1.8;"> details) {
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">21</span>         <span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,0,255);">this</span>.details =<span style="margin:0px;padding:0px;line-height:1.8;"> details;
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">22</span> <span style="margin:0px;padding:0px;line-height:1.8;">    }
</span><span style="margin:0px;padding:0px;line-height:1.8;color:rgb(0,128,128);">23</span> }</pre>
<div class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.8;"><a title="复制代码" style="margin:0px;padding:0px;color:rgb(57,154,178) !important;border:none !important;" target="_blank"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin:0px;padding:0px;border:none !important;"></a></span></div>
</div>
<p style="margin:10px auto;padding-top:0px;padding-bottom:0px;">&nbsp;</p>
</div>
<div id="MySignature" style="margin:0px;padding:0px;color:rgb(69,69,69);font-family:verdana, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.200000762939453px;">
<div style="margin:0px;padding:5px;border:1px solid rgb(204,204,204);background:rgb(255,255,153);">
作者:<a href="http://yjmyzz.cnblogs.com/" style="margin:0px;padding:0px;text-decoration:none;color:rgb(57,154,178) !important;border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:rgb(51,51,51);" target="_blank">菩提树下的杨过</a><br style="margin:0px;padding:0px;">
出处:<a href="http://yjmyzz.cnblogs.com/" style="margin:0px;padding:0px;text-decoration:none;color:rgb(57,154,178) !important;border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:rgb(51,51,51);" target="_blank">http://yjmyzz.cnblogs.com</a>&nbsp;<br style="margin:0px;padding:0px;">
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。</div>
</div>
                </div>
                    </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值