SpringBoot整合MyBatis

<div id="main">
<div id="mainContent">
<div class="forFlow">

<div id="post_detail">
<!--done-->
<div id="topics">
<div class="post">
<h1 class="postTitle">
<a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/zhuxiaojie/p/5836159.html">SpringBoot整合MyBatis</a>
</h1>
<div class="clear"></div>
<div class="postBody">
<div id="cnblogs_post_body"><p><strong><span style="font-size: 18pt; color: #ff0000;">转载请在文章最上方加上此句话:原文地址:<a href="http://www.cnblogs.com/zhuxiaojie/p/5836159.html" target="_blank"><span style="color: #ff0000;">http://www.cnblogs.com/zhuxiaojie/p/5836159.html</span></a></span></strong></p>
<p>&nbsp;</p>
<p>前言:这段时间用springboot感觉确实挺好用的,很大程度上的简化了开发,由其是它的自动化配置,让大大的提高了开发效率,现在我们要让SpringBoot与MyBatis一起工作。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>注:</strong><span style="color: #ff0000;">1.本人亲测可用,包括事务。</span></p>
<p><span style="color: #ff0000;">  2.使用注解形式,全程无MyBatis与Spring的配置文件</span></p>
<p>  <span style="color: #ff0000;">3.文章时间为2016-9-3日,使用的是MyBatis官方提供的mybatis-spring-boot-starter,当前最新版本为1.1.1。</span></p>
<p>  <span style="color: #ff0000;">4.mybatis-spring-boot-starter的github源码地址为:</span><a title="源码地址" href="https://github.com/mybatis/spring-boot-starter" target="_blank">https://github.com/mybatis/spring-boot-starter</a></p>
<p>  <span style="color: #ff0000;">5.mybatis-spring-boot-stater的官方文档地址为:</span><a href="http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/%20" target="_blank">http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>首先加入mybatis-spring-boot-stater的Maven依赖</p>
<div class="cnblogs_code">
<pre>        <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">dependency</span><span style="color: #0000ff;">&gt;</span>
            <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">groupId</span><span style="color: #0000ff;">&gt;</span>org.mybatis.spring.boot<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">groupId</span><span style="color: #0000ff;">&gt;</span>
            <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">artifactId</span><span style="color: #0000ff;">&gt;</span>mybatis-spring-boot-starter<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">artifactId</span><span style="color: #0000ff;">&gt;</span>
            <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">version</span><span style="color: #0000ff;">&gt;</span>1.1.1<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">version</span><span style="color: #0000ff;">&gt;</span>
        <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">dependency</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>配置数据源,这里使用的dbcp的数据源,具体大家可以看自己的情况来使用</p>
<p>在src/main/resource中,添加一个prop.properties配置文件,这里面添加了一些数据库连接的信息</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #000000;">#jdbc
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.137.2:3306/weichat?useUnicode=true</span><span style="color: #ff0000;">&amp;characterEncoding</span><span style="color: #000000;">=utf8
jdbc.username=root
jdbc.password=123456
jdbc.maxActive=2335
jdbc.maxIdel=120
jdbc.maxWait=100</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p>&nbsp;</p>
<p>然后加上下面的代码注入数据源</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #000000;">@Configuration<br>//这个注解导入刚才增加的jdbc配置文件
@PropertySource(</span>"classpath:prop.properties"<span style="color: #000000;">)
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> DataSourceConfiguration {
    @Value(</span>"${jdbc.driver}"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String driver;
    @Value(</span>"${jdbc.url}"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String url;
    @Value(</span>"${jdbc.username}"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String username;
    @Value(</span>"${jdbc.password}"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String password;
    @Value(</span>"${jdbc.maxActive}"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> maxActive;
    @Value(</span>"${jdbc.maxIdel}"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> maxIdel;
    @Value(</span>"${jdbc.maxWait}"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">long</span><span style="color: #000000;"> maxWait;


    
    @Bean
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> BasicDataSource dataSource(){
        BasicDataSource dataSource </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> BasicDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setMaxActive(maxActive);
        dataSource.setMaxIdle(maxIdel);
        dataSource.setMaxWait(maxWait);
        dataSource.setValidationQuery(</span>"SELECT 1"<span style="color: #000000;">);
        dataSource.setTestOnBorrow(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);
        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> dataSource;
    }
}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>增加MyBatis的配置</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.sql.DataSource;


</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.ibatis.session.SqlSessionFactory;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.mybatis.spring.SqlSessionFactoryBean;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.mybatis.spring.SqlSessionTemplate;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.beans.factory.annotation.Autowired;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Bean;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Configuration;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.jdbc.datasource.DataSourceTransactionManager;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.transaction.PlatformTransactionManager;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.transaction.annotation.EnableTransactionManagement;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.transaction.annotation.TransactionManagementConfigurer;


</span><span style="color: #008000;">/**</span><span style="color: #008000;">
 * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> zxj
 *
 </span><span style="color: #008000;">*/</span><span style="color: #000000;">
@Configuration
</span><span style="color: #008000;">//</span><span style="color: #008000;">加上这个注解,使得支持事务</span>
<span style="color: #000000;">@EnableTransactionManagement
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> MyBatisConfig <span style="color: #0000ff;">implements</span><span style="color: #000000;"> TransactionManagementConfigurer {
    @Autowired
    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> DataSource dataSource;


    @Override
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> PlatformTransactionManager annotationDrivenTransactionManager() {
         </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> DataSourceTransactionManager(dataSource);
    }


    @Bean(name </span>= "sqlSessionFactory"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> SqlSessionFactory sqlSessionFactoryBean() {
        SqlSessionFactoryBean bean </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlSessionFactoryBean();
        bean.setDataSource(dataSource);


        </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> bean.getObject();
        } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
            e.printStackTrace();
            </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> RuntimeException(e);
        }
    }


    @Bean
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlSessionTemplate(sqlSessionFactory);
    }
}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>然后需要配置MyBatis配置文件的路径,这个配置需要与上面的配置分开来写,因为它们有着一个先后顺序</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.mybatis.spring.mapper.MapperScannerConfigurer;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.boot.autoconfigure.AutoConfigureAfter;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Bean;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Configuration;


</span><span style="color: #008000;">/**</span><span style="color: #008000;">
 * 扫描mybatis的接口
 * 
 * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> zxj
 *
 </span><span style="color: #008000;">*/</span><span style="color: #000000;">
@Configuration
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 因为这个对象的扫描,需要在MyBatisConfig的后面注入,所以加上下面的注解</span>
@AutoConfigureAfter(MyBatisConfig.<span style="color: #0000ff;">class</span><span style="color: #000000;">)
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> MyBatisMapperScannerConfig {
    @Bean
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> MapperScannerConfigurer();
        </span><span style="color: #008000;">//</span><span style="color: #008000;">获取之前注入的beanName为sqlSessionFactory的对象</span>
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"<span style="color: #000000;">);
        </span><span style="color: #008000;">//</span><span style="color: #008000;">指定xml配置文件的路径</span>
        mapperScannerConfigurer.setBasePackage("com.framework.msg.mapper"<span style="color: #000000;">);
        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> mapperScannerConfigurer;
    }
}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>然后这就是配置完了,真的很简单,但是细心的朋友可能会问,代码里面怎么没有配置MyBatis接口的地址呢?</p>
<p>&nbsp;</p>
<p>在这里,<span style="color: #ff0000;">使用@Mapper注解来标识一个接口为MyBatis的接口,MyBatis会自动寻找这个接口</span>,如下</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Map;


</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.ibatis.annotations.Insert;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.ibatis.annotations.Mapper;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.ibatis.annotations.Param;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.ibatis.annotations.Select;


@Mapper
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">interface</span><span style="color: #000000;"> TestDao {


    @Select(</span>"select * from wx_userinfo;"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">public</span> Map&lt;String,Object&gt;<span style="color: #000000;"> find();
    
    @Insert(</span>"insert into wx_userinfo(openid,status,nickname,sex,city,province,country,headimgurl,subscribe_time) "+
            "values(#{id},1,'nick',1,'city','provi','contr','img',now())"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> insert(@Param("id")<span style="color: #0000ff;">int</span><span style="color: #000000;"> id);
}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p>&nbsp;</p>
<p>这样就可以使用了,当然,在这之前,你得开启@ComponentScan注解,或者直接使用@SpringBootApplication(推荐)</p><br><hr><pre>感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“<b>推荐</b>”按钮。本文欢迎各位转载,但是转载文章之后<b>必须在文章页面中给出作者和原文连接</b>。</pre></div><div id="MySignature"></div>
<div class="clear"></div>
<div id="blog_post_info_block">
<div id="BlogPostCategory">分类: <a href="http://www.cnblogs.com/zhuxiaojie/category/722393.html" target="_blank">MyBaits</a></div>
<div id="EntryTag"></div>
<div id="blog_post_info"><div id="green_channel">
        <a href="javascript:void(0);" id="green_channel_digg" οnclick="DiggIt(5836159,cb_blogId,1);green_channel_success(this,'谢谢推荐!');">好文要顶</a>
            <a id="green_channel_follow" οnclick="follow('c9b12129-ec8b-e211-90a7-f6db9189f8ef');" href="javascript:void(0);">关注我</a>
    <a id="green_channel_favorite" οnclick="AddToWz(cb_entryId);return false;" href="javascript:void(0);">收藏该文</a>
    <a id="green_channel_weibo" href="javascript:void(0);" title="分享至新浪微博" οnclick="ShareToTsina()"><img src="//common.cnblogs.com/images/icon_weibo_24.png" alt=""></a>
    <a id="green_channel_wechat" href="javascript:void(0);" title="分享至微信" οnclick="shareOnWechat()"><img src="//common.cnblogs.com/images/wechat.png" alt=""></a>
</div>
<div id="author_profile">
    <div id="author_profile_info" class="author_profile_info">
            <a href="http://home.cnblogs.com/u/zhuxiaojie/" target="_blank"><img src="//pic.cnblogs.com/face/sample_face.gif" class="author_avatar" alt=""></a>
        <div id="author_profile_detail" class="author_profile_info">
            <a href="http://home.cnblogs.com/u/zhuxiaojie/">朱小杰</a><br>
            <a href="http://home.cnblogs.com/u/zhuxiaojie/followees">关注 - 5</a><br>
            <a href="http://home.cnblogs.com/u/zhuxiaojie/followers">粉丝 - 54</a>
        </div>
    </div>
    <div class="clear"></div>
    <div id="author_profile_honor"></div>
    <div id="author_profile_follow">
                <a href="javascript:void(0);" οnclick="follow('c9b12129-ec8b-e211-90a7-f6db9189f8ef');return false;">+加关注</a>
    </div>
</div>
<div id="div_digg">
    <div class="diggit" οnclick="votePost(5836159,'Digg')">
        <span class="diggnum" id="digg_count">3</span>
    </div>
    <div class="buryit" οnclick="votePost(5836159,'Bury')">
        <span class="burynum" id="bury_count">0</span>
    </div>
    <div class="clear"></div>
    <div class="diggword" id="digg_tips">
    </div>
</div>
</div>
<div class="clear"></div>
<div id="post_next_prev"><a href="http://www.cnblogs.com/zhuxiaojie/p/5646108.html" class="p_n_p_prefix">« </a> 上一篇:<a href="http://www.cnblogs.com/zhuxiaojie/p/5646108.html" title="发布于2016-07-06 10:58">java多线程等待协调工作:CountDownLatch类的高级应用</a><br><a href="http://www.cnblogs.com/zhuxiaojie/p/5764680.html" class="p_n_p_prefix">» </a> 下一篇:<a href="http://www.cnblogs.com/zhuxiaojie/p/5764680.html" title="发布于2016-09-19 21:47">solr教程</a><br></div>
</div>




</div>
<div class="postDesc">posted @ <span id="post-date">2016-09-03 07:03</span> <a href="http://www.cnblogs.com/zhuxiaojie/">朱小杰</a> 阅读(<span id="post_view_count">10239</span>) 评论(<span id="post_comment_count">2</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=5836159" rel="nofollow">编辑</a> <a href="#" οnclick="AddToWz(5836159);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=217669,cb_entryId=5836159,cb_blogApp=currentBlogApp,cb_blogUserGuid='c9b12129-ec8b-e211-90a7-f6db9189f8ef',cb_entryCreatedDate='2016/9/3 7:03:00';loadViewCount(cb_entryId);</script>

</div><!--end: topics 文章、评论容器-->
</div><a name="!comments"></a><div id="blog-comments-placeholder"><div id="comments_pager_top"></div>
<br>
<div class="feedback_area_title">评论列表</div>
<div class="feedbackNoItems"></div>


<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
&nbsp;&nbsp;<span class="comment_actions"></span>
</div>
<a href="#3602442" class="layer">#1楼</a><a name="3602442" id="comment_anchor_3602442"></a>  <span class="comment_date">2017-01-12 16:36</span> <a id="a_comment_author_3602442" href="http://home.cnblogs.com/u/1094914/" target="_blank">时间好过</a> <a href="http://msg.cnblogs.com/send/%E6%97%B6%E9%97%B4%E5%A5%BD%E8%BF%87" title="发送站内短消息" class="sendMsg2This">&nbsp;</a>
</div>
<div class="feedbackCon">
<div id="comment_body_3602442" class="blog_comment_body">大神,好羡慕你写的这么溜,但是我才开始接触intellij idea,能不能从搭框架开始你点一点的讲呢,直接这样有点看不懂</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" οnclick="return voteComment(3602442,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" οnclick="return voteComment(3602442,'Bury',this)">反对(0)</a></div>
</div>
</div>

<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
&nbsp;&nbsp;<span class="comment_actions"></span>
</div>
<a href="#3635264" class="layer">#2楼</a><a name="3635264" id="comment_anchor_3635264"></a><span id="comment-maxId" style="display:none;">3635264</span><span id="comment-maxDate" style="display:none;">2017/3/8 19:37:51</span>  <span class="comment_date">2017-03-08 19:37</span> <a id="a_comment_author_3635264" href="http://www.cnblogs.com/shiyuelp/" target="_blank">十月南城</a> <a href="http://msg.cnblogs.com/send/%E5%8D%81%E6%9C%88%E5%8D%97%E5%9F%8E" title="发送站内短消息" class="sendMsg2This">&nbsp;</a>
</div>
<div class="feedbackCon">
<div id="comment_body_3635264" class="blog_comment_body">mapperScannerConfigurer.setBasePackage("com.framework.msg.mapper"); 指定的xml配置文件好像执行不了啊,只能在方法上面用注解可以执行数据的操作,求解答</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" οnclick="return voteComment(3635264,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" οnclick="return voteComment(3635264,'Bury',this)">反对(0)</a></div><span id="comment_3635264_avatar" style="display:none;">http://pic.cnblogs.com/face/836008/20170211111608.png</span>
</div>
</div>
<div id="comments_pager_bottom"></div></div><script type="text/javascript">var commentManager = new blogCommentManager();commentManager.renderComments(0);</script>
<div id="comment_form" class="commentform">
<a name="commentform"></a>
<div id="divCommentShow"></div>
<div id="comment_nav"><span id="span_refresh_tips"></span><a href="javascript:void(0);" οnclick="return RefreshCommentList();" id="lnk_RefreshComments" runat="server" clientidmode="Static">刷新评论</a><a href="#" οnclick="return RefreshPage();">刷新页面</a><a href="#top">返回顶部</a></div>
<div id="comment_form_container"><div class="login_tips">注册用户登录后才能发表评论,请 <a rel="nofollow" href="javascript:void(0);" class="underline" οnclick="return login('commentform');">登录</a> 或 <a rel="nofollow" href="javascript:void(0);" class="underline" οnclick="return register();">注册</a>,<a href="http://www.cnblogs.com">访问</a>网站首页。</div></div>
<div class="ad_text_commentbox" id="ad_text_under_commentbox"></div>
<div id="ad_t2"><a href="http://www.ucancode.com/index.htm" target="_blank">【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库</a><br><a href="http://click.aliyun.com/m/12746/" target="_blank">【抢】大学生专享|9.9元即刻拥有一台云服务器</a><br></div>
<div id="opt_under_post"></div>
<div id="cnblogs_c1" class="c_ad_block"><a href="http://www.gcpowertools.com.cn/products/activereports_overview.htm?utm_source=cnblogs&amp;utm_medium=blogpage&amp;utm_term=bottom&amp;utm_content=AR&amp;utm_campaign=community" target="_blank"><img width="300" height="250" src="//images2015.cnblogs.com/news/24442/201703/24442-20170331214645461-178851866.gif" alt="AR"></a></div>
<div id="under_post_news"><div class="itnews c_ad_block"><b>最新IT新闻</b>:<br> ·  <a href="http://news.cnblogs.com/n/566567/" target="_blank">谷歌母公司Alphabet狂挖生命科学与健康领域顶尖人才</a><br> ·  <a href="http://news.cnblogs.com/n/566566/" target="_blank">Udacity分拆成立自动驾驶出租车初创公司Voyage</a><br> ·  <a href="http://news.cnblogs.com/n/566565/" target="_blank">董明珠再度大手笔增持珠海银隆:变身第二大股东</a><br> ·  <a href="http://news.cnblogs.com/n/566563/" target="_blank">万达正式宣布进军游戏行业,推出新品牌“万代院线游戏”</a><br> ·  <a href="http://news.cnblogs.com/n/566562/" target="_blank">小米7年10个细节:每年都要“死”几次</a><br>» <a href="http://news.cnblogs.com/" title="IT新闻" target="_blank">更多新闻...</a></div></div>
<div id="cnblogs_c2" class="c_ad_block"><a href="http://click.aliyun.com/m/15483/" target="_blank"><img width="468" height="60" src="//images2015.cnblogs.com/news/24442/201703/24442-20170331150421570-489464769.jpg" alt="阿里云C2"></a></div>
<div id="under_post_kb"><div class="itnews c_ad_block" id="kb_block"><b>最新知识库文章</b>:<br><div id="kb_recent"> ·  <a href="http://kb.cnblogs.com/page/564590/" target="_blank">技术文章的阅读姿势</a><br> ·  <a href="http://kb.cnblogs.com/page/565931/" target="_blank">马拉松式学习与技术人员的成长性</a><br> ·  <a href="http://kb.cnblogs.com/page/537434/" target="_blank">程序员的“认知失调”</a><br> ·  <a href="http://kb.cnblogs.com/page/559485/" target="_blank">为什么有的人工作多年还是老样子</a><br> ·  <a href="http://kb.cnblogs.com/page/563885/" target="_blank">也许,这样理解HTTPS更容易</a><br></div>» <a href="http://kb.cnblogs.com/" target="_blank">更多知识库文章...</a></div></div>
<div id="HistoryToday" class="c_ad_block"></div>
<script type="text/javascript">
    fixPostBody();
    setTimeout(function () { incrementViewCount(cb_entryId); }, 50);
    deliverAdT2();
    deliverAdC1();
    deliverAdC2();    
    loadNewsAndKb();
    loadBlogSignature();
    LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
    GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate);
    loadOptUnderPost();
    GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);   
</script>
</div>




</div><!--end: forFlow -->
</div><!--end: mainContent 主体内容容器-->


<div id="sideBar">
<div id="sideBarMain">

<!--done-->
<div class="newsItem">
<h3 class="catListTitle">公告</h3>
<div id="blog-news"><div id="profile_block">昵称:<a href="http://home.cnblogs.com/u/zhuxiaojie/">朱小杰</a><br>园龄:<a href="http://home.cnblogs.com/u/zhuxiaojie/" title="入园时间:2013-03-13">4年</a><br>粉丝:<a href="http://home.cnblogs.com/u/zhuxiaojie/followers/">54</a><br>关注:<a href="http://home.cnblogs.com/u/zhuxiaojie/followees/">5</a><div id="p_b_follow"><a href="javascript:void(0);" οnclick="follow('c9b12129-ec8b-e211-90a7-f6db9189f8ef')">+加关注</a></div></div></div><script type="text/javascript">loadBlogNews();</script>
</div>


<div id="blog-calendar" style=""><table id="blogCalendar" class="Cal" cellspacing="0" cellpadding="0" title="日历">
<tbody><tr><td colspan="7"><table class="CalTitle" cellspacing="0">
<tbody><tr><td class="CalNextPrev"><a href="javascript:void(0);" οnclick="loadBlogCalendar('2017/03/01');return false;">&lt;</a></td><td align="center">2017年4月</td><td class="CalNextPrev" align="right"><a href="javascript:void(0);" οnclick="loadBlogCalendar('2017/05/01');return false;">&gt;</a></td></tr>
</tbody></table></td></tr><tr><th class="CalDayHeader" align="center" abbr="日" scope="col">日</th><th class="CalDayHeader" align="center" abbr="一" scope="col">一</th><th class="CalDayHeader" align="center" abbr="二" scope="col">二</th><th class="CalDayHeader" align="center" abbr="三" scope="col">三</th><th class="CalDayHeader" align="center" abbr="四" scope="col">四</th><th class="CalDayHeader" align="center" abbr="五" scope="col">五</th><th class="CalDayHeader" align="center" abbr="六" scope="col">六</th></tr><tr><td class="CalOtherMonthDay" align="center">26</td><td class="CalOtherMonthDay" align="center">27</td><td class="CalOtherMonthDay" align="center">28</td><td class="CalOtherMonthDay" align="center">29</td><td class="CalOtherMonthDay" align="center">30</td><td class="CalOtherMonthDay" align="center">31</td><td class="CalWeekendDay" align="center">1</td></tr><tr><td class="CalWeekendDay" align="center">2</td><td align="center">3</td><td align="center">4</td><td align="center">5</td><td class="CalTodayDay" align="center">6</td><td align="center">7</td><td class="CalWeekendDay" align="center">8</td></tr><tr><td class="CalWeekendDay" align="center">9</td><td align="center">10</td><td align="center">11</td><td align="center">12</td><td align="center">13</td><td align="center">14</td><td class="CalWeekendDay" align="center">15</td></tr><tr><td class="CalWeekendDay" align="center">16</td><td align="center">17</td><td align="center">18</td><td align="center">19</td><td align="center">20</td><td align="center">21</td><td class="CalWeekendDay" align="center">22</td></tr><tr><td class="CalWeekendDay" align="center">23</td><td align="center">24</td><td align="center">25</td><td align="center">26</td><td align="center">27</td><td align="center">28</td><td class="CalWeekendDay" align="center">29</td></tr><tr><td class="CalWeekendDay" align="center">30</td><td class="CalOtherMonthDay" align="center">1</td><td class="CalOtherMonthDay" align="center">2</td><td class="CalOtherMonthDay" align="center">3</td><td class="CalOtherMonthDay" align="center">4</td><td class="CalOtherMonthDay" align="center">5</td><td class="CalOtherMonthDay" align="center">6</td></tr>
</tbody></table></div><script type="text/javascript">loadBlogDefaultCalendar();</script>

<div id="leftcontentcontainer">
<div id="blog-sidecolumn"><div id="sidebar_search" class="sidebar-block">
<div id="sidebar_search" class="mySearch">
<h3 class="catListTitle">搜索</h3>
<div id="sidebar_search_box">
<div id="widget_my_zzk" class="div_my_zzk"><input type="text" id="q" οnkeydοwn="return zzk_go_enter(event);" class="input_my_zzk">&nbsp;<input οnclick="zzk_go()" type="button" value="找找看" id="btnZzk" class="btn_my_zzk"></div>
<div id="widget_my_google" class="div_my_zzk"><input type="text" name="google_q" id="google_q" οnkeydοwn="return google_go_enter(event)" class="input_my_zzk">&nbsp;<input οnclick="google_go()" type="button" value="谷歌搜索" class="btn_my_zzk"></div>
</div>
</div>


</div><div id="sidebar_shortcut" class="sidebar-block">
<div class="catListLink">
<h3 class="catListTitle">常用链接</h3>
<ul>
<li><a href="http://www.cnblogs.com/zhuxiaojie/p/" title="我的博客的随笔列表">我的随笔</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/MyComments.html" title="我发表过的评论列表">我的评论</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/OtherPosts.html" title="我评论过的随笔列表">我的参与</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/RecentComments.html" title="我的博客的评论列表">最新评论</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/tag/" title="我的博客的标签列表">我的标签</a></li>
</ul>
<div id="itemListLin_con" style="display:none;">
<ul>


</ul>
</div>
</div></div><div id="sidebar_toptags" class="sidebar-block">
<div class="catListTag">
<h3 class="catListTitle">我的标签</h3>
<ul>
<li><a href="http://www.cnblogs.com/zhuxiaojie/tag/ajax%E8%AF%B7%E6%B1%82%E5%9B%BE%E7%89%87/">ajax请求图片</a>(1)</li><li><a href="http://www.cnblogs.com/zhuxiaojie/tag/%E4%B8%80%E5%AF%B9%E4%B8%80/">一对一</a>(1)</li><li><a href="http://www.cnblogs.com/zhuxiaojie/tag/mybaits/">mybaits</a>(1)</li>
</ul>
</div></div><div id="sidebar_categories">
<div id="sidebar_postcategory" class="catListPostCategory sidebar-block">
<h3 class="catListTitle">随笔分类</h3>


<ul>


<li><a id="CatList_LinkList_0_Link_0" href="http://www.cnblogs.com/zhuxiaojie/category/722390.html">css</a> </li>


<li><a id="CatList_LinkList_0_Link_1" href="http://www.cnblogs.com/zhuxiaojie/category/892742.html">Docker(2)</a> </li>


<li><a id="CatList_LinkList_0_Link_2" href="http://www.cnblogs.com/zhuxiaojie/category/945694.html">hadoop(2)</a> </li>


<li><a id="CatList_LinkList_0_Link_3" href="http://www.cnblogs.com/zhuxiaojie/category/752890.html">Hibernate(1)</a> </li>


<li><a id="CatList_LinkList_0_Link_4" href="http://www.cnblogs.com/zhuxiaojie/category/669086.html">Java(17)</a> </li>


<li><a id="CatList_LinkList_0_Link_5" href="http://www.cnblogs.com/zhuxiaojie/category/722389.html">javascript/jquery(7)</a> </li>


<li><a id="CatList_LinkList_0_Link_6" href="http://www.cnblogs.com/zhuxiaojie/category/763608.html">Linux(1)</a> </li>


<li><a id="CatList_LinkList_0_Link_7" href="http://www.cnblogs.com/zhuxiaojie/category/799730.html">Lucene(1)</a> </li>


<li><a id="CatList_LinkList_0_Link_8" href="http://www.cnblogs.com/zhuxiaojie/category/901340.html">MongoDB(1)</a> </li>


<li><a id="CatList_LinkList_0_Link_9" href="http://www.cnblogs.com/zhuxiaojie/category/722393.html">MyBaits(4)</a> </li>


<li><a id="CatList_LinkList_0_Link_10" href="http://www.cnblogs.com/zhuxiaojie/category/901551.html">Spring(1)</a> </li>


<li><a id="CatList_LinkList_0_Link_11" href="http://www.cnblogs.com/zhuxiaojie/category/707637.html">SpringMVC(1)</a> </li>


<li><a id="CatList_LinkList_0_Link_12" href="http://www.cnblogs.com/zhuxiaojie/category/722633.html">Sql(4)</a> </li>


<li><a id="CatList_LinkList_0_Link_13" href="http://www.cnblogs.com/zhuxiaojie/category/828527.html">安卓</a> </li>


<li><a id="CatList_LinkList_0_Link_14" href="http://www.cnblogs.com/zhuxiaojie/category/776887.html">微信开发(1)</a> </li>


<li><a id="CatList_LinkList_0_Link_15" href="http://www.cnblogs.com/zhuxiaojie/category/838412.html">消息队列(1)</a> </li>


</ul>


</div>


<div id="sidebar_postarchive" class="catListPostArchive sidebar-block">
<h3 class="catListTitle">随笔档案</h3>


<ul>


<li><a id="CatList_LinkList_1_Link_0" href="http://www.cnblogs.com/zhuxiaojie/archive/2017/02.html">2017年2月 (3)</a> </li>


<li><a id="CatList_LinkList_1_Link_1" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/12.html">2016年12月 (1)</a> </li>


<li><a id="CatList_LinkList_1_Link_2" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/11.html">2016年11月 (2)</a> </li>


<li><a id="CatList_LinkList_1_Link_3" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/10.html">2016年10月 (7)</a> </li>


<li><a id="CatList_LinkList_1_Link_4" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/09.html">2016年9月 (2)</a> </li>


<li><a id="CatList_LinkList_1_Link_5" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/07.html">2016年7月 (1)</a> </li>


<li><a id="CatList_LinkList_1_Link_6" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/06.html">2016年6月 (2)</a> </li>


<li><a id="CatList_LinkList_1_Link_7" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/05.html">2016年5月 (2)</a> </li>


<li><a id="CatList_LinkList_1_Link_8" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/04.html">2016年4月 (1)</a> </li>


<li><a id="CatList_LinkList_1_Link_9" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/03.html">2016年3月 (2)</a> </li>


<li><a id="CatList_LinkList_1_Link_10" href="http://www.cnblogs.com/zhuxiaojie/archive/2016/01.html">2016年1月 (4)</a> </li>


<li><a id="CatList_LinkList_1_Link_11" href="http://www.cnblogs.com/zhuxiaojie/archive/2015/12.html">2015年12月 (4)</a> </li>


<li><a id="CatList_LinkList_1_Link_12" href="http://www.cnblogs.com/zhuxiaojie/archive/2015/11.html">2015年11月 (2)</a> </li>


<li><a id="CatList_LinkList_1_Link_13" href="http://www.cnblogs.com/zhuxiaojie/archive/2015/09.html">2015年9月 (9)</a> </li>


<li><a id="CatList_LinkList_1_Link_14" href="http://www.cnblogs.com/zhuxiaojie/archive/2015/08.html">2015年8月 (4)</a> </li>


<li><a id="CatList_LinkList_1_Link_15" href="http://www.cnblogs.com/zhuxiaojie/archive/2015/07.html">2015年7月 (1)</a> </li>


<li><a id="CatList_LinkList_1_Link_16" href="http://www.cnblogs.com/zhuxiaojie/archive/2015/03.html">2015年3月 (1)</a> </li>


</ul>


</div>


<div id="sidebar_articlecategory" class="catListArticleCategory sidebar-block">
<h3 class="catListTitle">文章分类</h3>


<ul>


<li><a id="CatList_LinkList_2_Link_0" href="http://www.cnblogs.com/zhuxiaojie/category/669069.html">html/html5(1)</a> </li>


<li><a id="CatList_LinkList_2_Link_1" href="http://www.cnblogs.com/zhuxiaojie/category/669043.html">JAVASE类(1)</a> </li>


<li><a id="CatList_LinkList_2_Link_2" href="http://www.cnblogs.com/zhuxiaojie/category/669161.html">JavaWeb(1)</a> </li>


</ul>


</div>


</div><div id="sidebar_recentcomments" class="sidebar-block"><div id="recent_comments_wrap">
<div class="catListComment">
<h3 class="catListTitle">最新评论</h3>


<div id="RecentCommentsBlock"><ul>
        <li class="recent_comment_title"><a href="http://www.cnblogs.com/zhuxiaojie/p/4783939.html#3642669">1. Re:使用ajax提交form表单,包括ajax文件上传</a></li>
        <li class="recent_comment_body">@asdffd你们没仔细看我红色部分写的...</li>
        <li class="recent_comment_author">--朱小杰</li>
        <li class="recent_comment_title"><a href="http://www.cnblogs.com/zhuxiaojie/p/4783939.html#3642667">2. Re:使用ajax提交form表单,包括ajax文件上传</a></li>
        <li class="recent_comment_body">@菜籽花你们没仔细看我红色部分写的...</li>
        <li class="recent_comment_author">--朱小杰</li>
        <li class="recent_comment_title"><a href="http://www.cnblogs.com/zhuxiaojie/p/4783939.html#3642334">3. Re:使用ajax提交form表单,包括ajax文件上传</a></li>
        <li class="recent_comment_body">同上formdata格式的数据后台怎么接收啊 我怎么接收不到</li>
        <li class="recent_comment_author">--asdffd</li>
        <li class="recent_comment_title"><a href="http://www.cnblogs.com/zhuxiaojie/p/5836159.html#3635264">4. Re:SpringBoot整合MyBatis</a></li>
        <li class="recent_comment_body">mapperScannerConfigurer.setBasePackage("com.framework.msg.mapper"); 指定的xml配置文件好像执行不了啊,只能在方法上面用注解可以执行......</li>
        <li class="recent_comment_author">--十月南城</li>
        <li class="recent_comment_title"><a href="http://www.cnblogs.com/zhuxiaojie/p/4783939.html#3627541">5. Re:使用ajax提交form表单,包括ajax文件上传</a></li>
        <li class="recent_comment_body">FormData格式的数据,后台怎么接收啊,我接收的都是null(request.getParameter("name");)</li>
        <li class="recent_comment_author">--菜籽花</li>
</ul>
</div>
</div>
</div></div><div id="sidebar_topviewedposts" class="sidebar-block"><div id="topview_posts_wrap">
<div class="catListView">
<h3 class="catListTitle">阅读排行榜</h3>
<div id="TopViewPostsBlock"><ul><li><a href="http://www.cnblogs.com/zhuxiaojie/p/4783939.html">1. 使用ajax提交form表单,包括ajax文件上传(33909)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5836159.html">2. SpringBoot整合MyBatis(10240)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5564187.html">3. ActiveMQ消息队列的使用及应用(7901)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5947270.html">4. docker进入后台运行的容器(5321)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/4619804.html">5. Spring MVC学习(3616)</a></li></ul></div>
</div>
</div></div><div id="sidebar_topcommentedposts" class="sidebar-block"><div id="topfeedback_posts_wrap">
<div class="catListFeedback">
<h3 class="catListTitle">评论排行榜</h3>
<div id="TopFeedbackPostsBlock"><ul><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5564187.html">1. ActiveMQ消息队列的使用及应用(11)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/4783939.html">2. 使用ajax提交form表单,包括ajax文件上传(8)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/6055298.html">3. 使用java代码关闭指定端口的程序-windows(4)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5990262.html">4. 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题(3)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5764680.html">5. solr教程(3)</a></li></ul></div>
</div>
</div></div><div id="sidebar_topdiggedposts" class="sidebar-block"><div id="topdigg_posts_wrap">
<div class="catListView">
<h3 class="catListTitle">推荐排行榜</h3>
<div id="TopDiggPostsBlock"><ul><li><a href="http://www.cnblogs.com/zhuxiaojie/p/4783939.html">1. 使用ajax提交form表单,包括ajax文件上传(14)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/4619804.html">2. Spring MVC学习(13)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5564187.html">3. ActiveMQ消息队列的使用及应用(9)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/5990262.html">4. 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题(4)</a></li><li><a href="http://www.cnblogs.com/zhuxiaojie/p/4677227.html">5. MyBaits一对一的查询方法(3)</a></li></ul></div>
</div></div></div></div><script type="text/javascript">loadBlogSideColumn();</script>
</div>

</div><!--end: sideBarMain -->
</div><!--end: sideBar 侧边栏容器 -->
<div class="clear"></div>
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值