﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-红烧狮子头的地盘-随笔分类-Mybatis</title><link>http://www.blogjava.net/davidjefiny/category/54063.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 31 Dec 2013 14:30:21 GMT</lastBuildDate><pubDate>Tue, 31 Dec 2013 14:30:21 GMT</pubDate><ttl>60</ttl><item><title>一步步学Mybatis-告别繁琐的配置之Mybatis配置文件生成工具 （7）</title><link>http://www.blogjava.net/davidjefiny/archive/2013/12/31/408289.html</link><dc:creator>红烧狮子头</dc:creator><author>红烧狮子头</author><pubDate>Tue, 31 Dec 2013 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/davidjefiny/archive/2013/12/31/408289.html</guid><wfw:comment>http://www.blogjava.net/davidjefiny/comments/408289.html</wfw:comment><comments>http://www.blogjava.net/davidjefiny/archive/2013/12/31/408289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/davidjefiny/comments/commentRss/408289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/davidjefiny/services/trackbacks/408289.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今年是2013年的杀青之日，前几天由于比较忙，没有及时更新本篇的最后一篇东西，前六篇中我们主要都是采用手动配置相关的Mybatis映射文件与相 应的接口类与实体类。当然如果在真正的使用过程中，由于业务的复杂度，表少点的话还好如果相关业务表很多，难道我们都要一个个这样去配置嘛，这显然不可 能，今天就要讲述怎么通过官方提供的MyBatisGenerator生成相应的配置文件。还记得第一章中我们要求准备...&nbsp;&nbsp;<a href='http://www.blogjava.net/davidjefiny/archive/2013/12/31/408289.html'>阅读全文</a><img src ="http://www.blogjava.net/davidjefiny/aggbug/408289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/davidjefiny/" target="_blank">红烧狮子头</a> 2013-12-31 14:28 <a href="http://www.blogjava.net/davidjefiny/archive/2013/12/31/408289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一步步学Mybatis-怎么样实现动态SQL查询（6）</title><link>http://www.blogjava.net/davidjefiny/archive/2013/12/27/408137.html</link><dc:creator>红烧狮子头</dc:creator><author>红烧狮子头</author><pubDate>Fri, 27 Dec 2013 12:54:00 GMT</pubDate><guid>http://www.blogjava.net/davidjefiny/archive/2013/12/27/408137.html</guid><wfw:comment>http://www.blogjava.net/davidjefiny/comments/408137.html</wfw:comment><comments>http://www.blogjava.net/davidjefiny/archive/2013/12/27/408137.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/davidjefiny/comments/commentRss/408137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/davidjefiny/services/trackbacks/408137.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上一章我们已经讲完了关于Mybatis的分页用法，其实MyBatis 还具有的一个强大的特性之一通常是它的动态 SQL 能力。 如果你有使用 JDBC 或其他 相似框架的经验,你就明白要动态的串联 SQL 字符串在一起是十分纠结的，确保不能忘了空格或在列表的最后省略逗号。Mybatis中的动态 SQL 可以彻底处理这种痛苦。对于动态SQL，最通俗简单的方法就是我们自己在硬编码的时候赋予各种动态行为...&nbsp;&nbsp;<a href='http://www.blogjava.net/davidjefiny/archive/2013/12/27/408137.html'>阅读全文</a><img src ="http://www.blogjava.net/davidjefiny/aggbug/408137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/davidjefiny/" target="_blank">红烧狮子头</a> 2013-12-27 20:54 <a href="http://www.blogjava.net/davidjefiny/archive/2013/12/27/408137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一步步学Mybatis-实现简单的分页效果逻辑 （5）</title><link>http://www.blogjava.net/davidjefiny/archive/2013/12/25/408033.html</link><dc:creator>红烧狮子头</dc:creator><author>红烧狮子头</author><pubDate>Wed, 25 Dec 2013 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/davidjefiny/archive/2013/12/25/408033.html</guid><wfw:comment>http://www.blogjava.net/davidjefiny/comments/408033.html</wfw:comment><comments>http://www.blogjava.net/davidjefiny/archive/2013/12/25/408033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/davidjefiny/comments/commentRss/408033.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/davidjefiny/services/trackbacks/408033.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在前四章中我们已经基本完成了对单表的CRUD与多表联合查询方式的Mybatis操作与配置方式，今天这里要讲的是关于一个业务问题中我们常 碰到的分页问题。在开发web项目的时候我们经常会使用到列表显示，一般我们都会用一些常用的列表控件例如，datatables（个人感觉十分不 错），easy ui下面的那些封装好的表格控件。　　思路：在这些控件里要达到分页的效果，一般都会传2个参数，第一个是表示当前...&nbsp;&nbsp;<a href='http://www.blogjava.net/davidjefiny/archive/2013/12/25/408033.html'>阅读全文</a><img src ="http://www.blogjava.net/davidjefiny/aggbug/408033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/davidjefiny/" target="_blank">红烧狮子头</a> 2013-12-25 17:50 <a href="http://www.blogjava.net/davidjefiny/archive/2013/12/25/408033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一步步学Mybatis-实现多表联合查询（4）</title><link>http://www.blogjava.net/davidjefiny/archive/2013/12/24/407985.html</link><dc:creator>红烧狮子头</dc:creator><author>红烧狮子头</author><pubDate>Tue, 24 Dec 2013 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/davidjefiny/archive/2013/12/24/407985.html</guid><wfw:comment>http://www.blogjava.net/davidjefiny/comments/407985.html</wfw:comment><comments>http://www.blogjava.net/davidjefiny/archive/2013/12/24/407985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/davidjefiny/comments/commentRss/407985.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/davidjefiny/services/trackbacks/407985.html</trackback:ping><description><![CDATA[<div><p>　　上一章节中我们已经完成了对单表的CRUD操作，接下来今天这一讲讲述的是关于Mybatis在多表查询时候的应用，毕竟实际业务中也是多表的联合查询比较多嘛~</p><p>还记得最一开始我们新建过一张Website表吗，在那张表里有个VisitorId字段，表示访问者访问过哪些网站，现在我们先按照上一张中的要求把关于Website的JavaBean实体先建立出来。</p><p>还是在david.mybatis.model包下面新建一个Website类，用来持久化数据之用，重写下相应toString()方法，方便测试程序之用。</p><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_165313" onclick="this.style.display='none'; Code_Closed_Text_165313.style.display='none'; Code_Open_Image_165313.style.display='inline'; Code_Open_Text_165313.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_165313" style="display: none" onclick="this.style.display='none'; Code_Open_Text_165313.style.display='none'; Code_Closed_Image_165313.style.display='inline'; Code_Closed_Text_165313.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_165313" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Website实体类</span><span id="Code_Open_Text_165313" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;david.mybatis.model;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.text.SimpleDateFormat;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Date;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Website&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;visitorId;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Date&nbsp;createTime;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Visitor&nbsp;visitor;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Website()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;constructor&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createTime&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Date();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visitor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Visitor();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Website(String&nbsp;name,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;visitorId)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.visitorId&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;visitorId;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visitor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Visitor();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createTime&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Date();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getId()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setId(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.id&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Visitor&nbsp;getVisitor()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;visitor;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setVisitor(Visitor&nbsp;visitor)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.visitor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;visitor;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getName()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setName(String&nbsp;name)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getStatus()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setStatus(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;status)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.status&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Date&nbsp;getCreateTime()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;createTime;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setCreateTime(Date&nbsp;createTime)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.createTime&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;createTime;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getVisitorId()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(visitor&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;visitorId;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;visitor.getId();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setVisitorId(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;visitorId)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.visitorId&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;visitorId;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;toString()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;sb&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuilder(String.format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Website=&gt;&nbsp;{Id：%d,&nbsp;Name：%s,&nbsp;CreateTime：%s}\r\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;id,&nbsp;name,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SimpleDateFormat(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">yyyy-MM-dd&nbsp;HH:mm:ss</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).format(createTime)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(visitor&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(String.format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Visitor=&gt;&nbsp;%s</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;visitor.toString()));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;sb.toString();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />Website实体类</span></span></div></div><p>在david.mybatis.demo下面分别新建相应的操作接口：<br /></p><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_165513" onclick="this.style.display='none'; Code_Closed_Text_165513.style.display='none'; Code_Open_Image_165513.style.display='inline'; Code_Open_Text_165513.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_165513" style="display: none" onclick="this.style.display='none'; Code_Open_Text_165513.style.display='none'; Code_Closed_Image_165513.style.display='inline'; Code_Closed_Text_165513.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_165513" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Website操作接口</span><span id="Code_Open_Text_165513" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;david.mybatis.demo;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.List;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;david.mybatis.model.Website;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">interface</span><span style="color: #000000; ">&nbsp;IWebsiteOperation&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;add(Website&nbsp;website);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;delete(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;update(Website&nbsp;website);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Website&nbsp;query(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Website</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;getList();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}</span></span></div><p>在mapper文件夹下新建WebsiteMapper.xml映射文件，分别参照上一张所说的把增删改查的单表操作配置分别放进去，这样你可以建造一点测试数据。如下</p><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_165445" onclick="this.style.display='none'; Code_Closed_Text_165445.style.display='none'; Code_Open_Image_165445.style.display='inline'; Code_Open_Text_165445.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_165445" style="display: none" onclick="this.style.display='none'; Code_Open_Text_165445.style.display='none'; Code_Closed_Image_165445.style.display='inline'; Code_Closed_Text_165445.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_165445" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">WebsiteMapper配置</span><span id="Code_Open_Text_165445" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;mapper<br />&nbsp;&nbsp;PUBLIC&nbsp;"-//mybatis.org//DTD&nbsp;Mapper&nbsp;3.0//EN"<br />&nbsp;&nbsp;"http://mybatis.org/dtd/mybatis-3-mapper.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mapper&nbsp;</span><span style="color: #FF0000; ">namespace</span><span style="color: #0000FF; ">="david.mybatis.demo.IWebsiteOperation"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">sql&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="getListSql"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name,&nbsp;VisitorId,&nbsp;status,&nbsp;createTime&nbsp;from&nbsp;Website<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;status&gt;0<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">sql</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">insert&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="add"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="Website"</span><span style="color: #FF0000; ">&nbsp;useGeneratedKeys</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyProperty</span><span style="color: #0000FF; ">="Id"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert&nbsp;into&nbsp;Website&nbsp;(Name,&nbsp;VisitorId,&nbsp;Status,&nbsp;CreateTime)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values&nbsp;(#{name},&nbsp;#{visitorId},&nbsp;#{status},&nbsp;#{createTime})<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">insert</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">delete&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="delete"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="int"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;from&nbsp;website&nbsp;where<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&gt;0&nbsp;and&nbsp;id&nbsp;=&nbsp;#{id}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">delete</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">update&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="update"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="Website"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;website&nbsp;set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name=#{name}&nbsp;where&nbsp;status&gt;0&nbsp;and&nbsp;id=#{id}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">update</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">select&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="query"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="int"</span><span style="color: #FF0000; ">&nbsp;resultMap</span><span style="color: #0000FF; ">="websiteRs"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Website.id&nbsp;siteId,&nbsp;Website.name&nbsp;siteName,&nbsp;Visitor.Id&nbsp;visitorId,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Visitor.name&nbsp;visitorName,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Website.status&nbsp;siteStatus,&nbsp;Website.createtime<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;siteCreateTime&nbsp;from&nbsp;Website<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inner&nbsp;join&nbsp;Visitor&nbsp;on&nbsp;Website.visitorid&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Visitor.id&nbsp;where&nbsp;Website.status&gt;0&nbsp;and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Website.id=#{id}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">select</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">resultMap&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="Website"</span><span style="color: #FF0000; ">&nbsp;id</span><span style="color: #0000FF; ">="websiteRs"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="siteId"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="id"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="siteName"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="name"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="siteStatus"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="status"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="siteCreateTime"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="createTime"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">association&nbsp;</span><span style="color: #FF0000; ">property</span><span style="color: #0000FF; ">="visitor"</span><span style="color: #FF0000; ">&nbsp;javaType</span><span style="color: #0000FF; ">="Visitor"</span><span style="color: #FF0000; ">&nbsp;resultMap</span><span style="color: #0000FF; ">="visitorRs"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">resultMap</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">resultMap&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="Visitor"</span><span style="color: #FF0000; ">&nbsp;id</span><span style="color: #0000FF; ">="visitorRs"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="visitorId"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="id"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="visitorName"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="name"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">resultMap</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">select&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="getList"</span><span style="color: #FF0000; ">&nbsp;resultMap</span><span style="color: #0000FF; ">="websiteByVisitorIdRs"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">refid</span><span style="color: #0000FF; ">="getListSql"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">select</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mapper</span><span style="color: #0000FF; ">&gt;</span></span></div></div><p>这里今天主要说的就是那个查，现在我们想要查询网站的同时分别把相应的访问者信息一起拿出来，怎么做呢，大家可以参照配置中的query,写下联表查询的SQL，</p><p><strong><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;">这里主要要注意的是，Website实体与Visit的实体里面Id与Name这2个属性都是一样的，所以为了避免映射出现出错现象，把相应的查询结果列起上不一样的别名，这样绑定的时候就可以避免</span></strong>。</p><p><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><strong>假如我想下面一样配置会得到什么呢?</strong></span></p><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_170457" onclick="this.style.display='none'; Code_Closed_Text_170457.style.display='none'; Code_Open_Image_170457.style.display='inline'; Code_Open_Text_170457.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_170457" style="display: none" onclick="this.style.display='none'; Code_Open_Text_170457.style.display='none'; Code_Closed_Image_170457.style.display='inline'; Code_Closed_Text_170457.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_170457" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"> 可能引起错误的配置</span><span id="Code_Open_Text_170457" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">select&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="query"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="int"</span><span style="color: #FF0000; ">&nbsp;resultMap</span><span style="color: #0000FF; ">="websiteRs"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;select<br />&nbsp;&nbsp;&nbsp;&nbsp;Website.id,&nbsp;Website.name&nbsp;siteName,&nbsp;Visitor.Id,<br />&nbsp;&nbsp;&nbsp;&nbsp;Visitor.name&nbsp;visitorName,<br />&nbsp;&nbsp;&nbsp;&nbsp;Website.status&nbsp;siteStatus,&nbsp;Website.createtime<br />&nbsp;&nbsp;&nbsp;&nbsp;siteCreateTime&nbsp;from&nbsp;Website<br />&nbsp;&nbsp;&nbsp;&nbsp;inner&nbsp;join&nbsp;Visitor&nbsp;on&nbsp;Website.visitorid&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;Visitor.id&nbsp;where&nbsp;Website.status&gt;0&nbsp;and<br />&nbsp;&nbsp;&nbsp;&nbsp;Website.id=#{id}<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">select</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">resultMap&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="Website"</span><span style="color: #FF0000; ">&nbsp;id</span><span style="color: #0000FF; ">="websiteRs"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="id"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="id"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="siteName"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="name"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="siteStatus"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="status"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="siteCreateTime"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="createTime"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">association&nbsp;</span><span style="color: #FF0000; ">property</span><span style="color: #0000FF; ">="visitor"</span><span style="color: #FF0000; ">&nbsp;javaType</span><span style="color: #0000FF; ">="Visitor"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultMap</span><span style="color: #0000FF; ">="visitorRs"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">resultMap</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">resultMap&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="Visitor"</span><span style="color: #FF0000; ">&nbsp;id</span><span style="color: #0000FF; ">="visitorRs"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="id"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="id"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">column</span><span style="color: #0000FF; ">="visitorName"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="name"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">resultMap</span><span style="color: #0000FF; ">&gt;</span></span></div></div><p><img src="http://images.cnitblog.com/blog/302948/201312/24161851-939516cddf5641cebff595426d350347.png" alt="" data-mce-src="http://images.cnitblog.com/blog/302948/201312/24161851-939516cddf5641cebff595426d350347.png" /></p><p><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><strong>有 木有发觉，Visitor的Id也变成2了，这个其实它默认映射了Website的ID，因为SQL语句查询出来的结果2个ID都是变成2了，有人会问为 什么不是4呢，因为他默认匹配第一个如果你把Website.Id与Visit.Id的位置，相互换下就会发现结果又神奇的变了</strong></span></p><p><img src="http://images.cnitblog.com/blog/302948/201312/24162245-2b7abacabba343c0aa14173c614e9c46.png" alt="" data-mce-src="http://images.cnitblog.com/blog/302948/201312/24162245-2b7abacabba343c0aa14173c614e9c46.png" /></p><p>所以需要起个别名避免这种情况，这样你就会发现真相其实只有一个就是下面的：</p><p><img src="http://images.cnitblog.com/blog/302948/201312/24162524-d8a69b2d27174bb6809799f440d7b22e.png" alt="" data-mce-src="http://images.cnitblog.com/blog/302948/201312/24162524-d8a69b2d27174bb6809799f440d7b22e.png" /></p><p>大 家可以看到其实多表处理resultMap的方式和单表是一致的，也无非是吧列明与Javabean属性名成对应上去，可以看到在Website 的&lt;resultMap&gt;节点里面前台另外一个resultMap，他就是代表Visit实体所需要映射的实体，可以使用以下方式进行关联</p><div><pre><span style="color: #0000ff;" data-mce-style="color: #0000ff;">&lt;</span><span style="color: #800000;" data-mce-style="color: #800000;">association </span><span style="color: #ff0000;" data-mce-style="color: #ff0000;">property</span><span style="color: #0000ff;" data-mce-style="color: #0000ff;">="visitor"</span><span style="color: #ff0000;" data-mce-style="color: #ff0000;"> javaType</span><span style="color: #0000ff;" data-mce-style="color: #0000ff;">="Visitor"</span><span style="color: #ff0000;" data-mce-style="color: #ff0000;"> resultMap</span><span style="color: #0000ff;" data-mce-style="color: #0000ff;">="visitorRs"</span> <span style="color: #0000ff;" data-mce-style="color: #0000ff;">/&gt;</span></pre></div><p>其中的visitor就是Website实体中的visit字段名，必须保证名称一致，否则就会抛出<span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><strong>There is no getter for property named 'XXX' in 'class david.mybatis.model.Website'的异常</strong><span style="background-color: #ffffff;" data-mce-style="background-color: #ffffff;">，这在上几章已经讲述了，</span></span><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><span style="background-color: #ffffff;" data-mce-style="background-color: #ffffff;">当 然如果你觉得不用嵌套resultMap也行，嵌套也是出于其他地方可以还要用到这个配置那就提炼出来的过程，也是抽象出来的一种思想。具体使 用&lt;resultMap&gt;中的ID与Result可以从官网查找相应区别说明：http://mybatis.github.io /mybatis-3/sqlmap-xml.html#Result_Maps</span></span></p><p><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><span style="background-color: #ffffff;" data-mce-style="background-color: #ffffff;">这样，一个简单的多表联合查询就出来啦~，如果还有更加复杂的查询业务费是在这个基础上些许的变通修改。</span></span></p><p><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><span style="background-color: #ffffff;" data-mce-style="background-color: #ffffff;">这章就到此为止啦，下一章会继续跟讲下，如果弄一个简单的Mybatis下的分页效果~^0^<br /></span></span></p></div><img src ="http://www.blogjava.net/davidjefiny/aggbug/407985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/davidjefiny/" target="_blank">红烧狮子头</a> 2013-12-24 17:06 <a href="http://www.blogjava.net/davidjefiny/archive/2013/12/24/407985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一步步学Mybatis-实现单表情况下的CRUD操作 （3）</title><link>http://www.blogjava.net/davidjefiny/archive/2013/12/22/407895.html</link><dc:creator>红烧狮子头</dc:creator><author>红烧狮子头</author><pubDate>Sun, 22 Dec 2013 14:57:00 GMT</pubDate><guid>http://www.blogjava.net/davidjefiny/archive/2013/12/22/407895.html</guid><wfw:comment>http://www.blogjava.net/davidjefiny/comments/407895.html</wfw:comment><comments>http://www.blogjava.net/davidjefiny/archive/2013/12/22/407895.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/davidjefiny/comments/commentRss/407895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/davidjefiny/services/trackbacks/407895.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天这一章要紧接上一讲中的东西，本章中创建基于单表操作的CRUD与GetList操作，此示例中以Visitor表为范例，为了创建一点测试数据我们先弄个Add方法吧继续在上次的IVisitorOperation接口类中添加add，delete，update，query与getList接口方法，如下所示：IVisitorOperation接口类Code highlighting produced by...&nbsp;&nbsp;<a href='http://www.blogjava.net/davidjefiny/archive/2013/12/22/407895.html'>阅读全文</a><img src ="http://www.blogjava.net/davidjefiny/aggbug/407895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/davidjefiny/" target="_blank">红烧狮子头</a> 2013-12-22 22:57 <a href="http://www.blogjava.net/davidjefiny/archive/2013/12/22/407895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一步步学Mybatis-以接口操作的方式编程（2）</title><link>http://www.blogjava.net/davidjefiny/archive/2013/12/22/407872.html</link><dc:creator>红烧狮子头</dc:creator><author>红烧狮子头</author><pubDate>Sun, 22 Dec 2013 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/davidjefiny/archive/2013/12/22/407872.html</guid><wfw:comment>http://www.blogjava.net/davidjefiny/comments/407872.html</wfw:comment><comments>http://www.blogjava.net/davidjefiny/archive/2013/12/22/407872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/davidjefiny/comments/commentRss/407872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/davidjefiny/services/trackbacks/407872.html</trackback:ping><description><![CDATA[<div><p>　　上一章节中，我们已经搭建玩了最简单的能够运行的HelloWorld环境，这一章将把上章中的操作方式改为以接口的方式操作</p><p>我们可以发现在上一个章节中</p></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;testBasicQuery(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MybatisUtils.getSqlSession();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;此处的david.mybatis.demo.IVisitorOperation.basicQuery必须和下图中配置里面的namespace对应<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Visitor&nbsp;visitor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Visitor)&nbsp;session.selectOne(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">david.mybatis.demo.IVisitorOperation.basicQuery</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;id);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MybatisUtils.closeSession(session);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(visitor);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;此处namespace对应的就是你所传的String参数&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mapper&nbsp;</span><span style="color: #FF0000; ">namespace</span><span style="color: #0000FF; ">="david.mybatis.demo.IVisitorOperation"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;此处的resultType就是对应刚刚你在typeAlias节点里面规定的别名&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">select&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="basicQuery"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="int"</span><span style="color: #FF0000; ">&nbsp;resultType</span><span style="color: #0000FF; ">="Visitor"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;visitor&nbsp;where&nbsp;id=#{id}&nbsp;and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Status&gt;0&nbsp;order&nbsp;by&nbsp;Id<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">select</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mapper</span><span style="color: #0000ff;">&gt;</span></div><div><p>　　这样其实在真正的开发过程中如果两边的名字一不小心没有对应上，就会出现异常。为了避免这样的情况我们可以采取接口的方式来进行相应的操作，下面我们来修改这段东西。</p><p>首先我们在包名为david.mybatis.demo的下面新建一个IVisitOperation类，表示今后将要操作数据库所有方法的接口，如下所示：</p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;david.mybatis.demo;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.List;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;david.mybatis.model.PagenateArgs;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;david.mybatis.model.Visitor;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">interface</span><span style="color: #000000; ">&nbsp;IVisitorOperation&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;基础查询<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Visitor&nbsp;basicQuery(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id);<br />}</span></div>修改操作方式<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;testBasicQueryByInterfaceWay(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MybatisUtils.getSqlSession();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IVisitorOperation&nbsp;vOperation&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;session.getMapper(IVisitorOperation.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Visitor&nbsp;visitor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;vOperation.basicQuery(id);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MybatisUtils.closeSession(session);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(visitor);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br /></span><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();</div><span style="color: #008000;"></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span></div></div><div><p>这样就大功告成了，这样我们就不必为手动书写方法名可能导致的不匹配而烦恼了。</p><p>下一章将继续讲述基于单表情况下的CRUD操作，我会尽快整理更新~^0^</p></div><img src ="http://www.blogjava.net/davidjefiny/aggbug/407872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/davidjefiny/" target="_blank">红烧狮子头</a> 2013-12-22 14:37 <a href="http://www.blogjava.net/davidjefiny/archive/2013/12/22/407872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一步步学Mybatis-搭建最简单的开发环境-开篇（1） </title><link>http://www.blogjava.net/davidjefiny/archive/2013/12/22/Mybatis.html</link><dc:creator>红烧狮子头</dc:creator><author>红烧狮子头</author><pubDate>Sun, 22 Dec 2013 04:23:00 GMT</pubDate><guid>http://www.blogjava.net/davidjefiny/archive/2013/12/22/Mybatis.html</guid><wfw:comment>http://www.blogjava.net/davidjefiny/comments/407863.html</wfw:comment><comments>http://www.blogjava.net/davidjefiny/archive/2013/12/22/Mybatis.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/davidjefiny/comments/commentRss/407863.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/davidjefiny/services/trackbacks/407863.html</trackback:ping><description><![CDATA[<div>
<p>　　最近抽空学习了Mybatis这个框架，在学习的过程中也找了很多的文章，个人感觉官网上的东西太多太杂，不适合许多希望一步步快速上手的朋友们，当然觉得查阅问题的时候可以直接通过官网找还比较快或者是StackOverflow，鉴于此原因把自己想把自己学习过程中的经验留作笔记以供分享参考之用，尽量少绕弯路。因为想直接了解Mybatis的使用方式，而网上有许多学习文章是Mybatis与Spring的结合范例，或者说直接在Web Project项目下创立的范例，感觉对于只是纯粹想了解那个东西怎么使用的朋友应该不需要那么多附加的条件，所以本系列中直接用最简单的Java Project作范例演示。</p>
<p>　　什么是Mybatis，前身iBatis（个人没用过，所以没什么发言权），引述官网的原意来说，Mybatis是支持普通SQL查询，可以更简单直接的操作SQL，存储过程和高级映射的一种优秀的持久层框架，使用它基本可以消除所有的JDBC大麦和参数的手工设置以及结果集的检索，其实个人使用下来感觉，其实主要工作都是在配置XML或者注解上，然后将接口和Java的POJO（普通Java对象映射成数据库的记录），个人没用过Java的Hb，所以对于两者之间的差异性也没权限发表意见，我相信各个事物的产生总有它自己的目的。</p>
<p>　　这段时间学习下来，其实对Mybatis来说主要的过程无法是以下几步</p>
<p>　　1. 从XML配置文件中获取SessionFactory，然后由SessionFactory产生相应的Session。</p>
<p>　　2. 是用Session对象对业务数据完成相应的CRUD操作（增删改查）和相应的事务控制。</p>
<p>　　3. 使用完毕后关闭相应的Session，以免过度占用资源</p>
<p>　　4. 使用配置相应的Mapper xml文件进行业务实体的JavaBean与数据库表之间做相应的Map操作</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; <br />
</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; 战前准备：</p>
<p>　　1. 开发环境Eclipse JavaEE IDE，JDK 1.6，数据库mysql 5.5</p>
<p>　　2. 下载相应Jar包，以备后用</p>
<p>　　　　mybatis-3.2.3.zip&nbsp;解压后拿出 mybatis-3.2.3.jar，=&gt; 下载地址： <a href="http://code.google.com/p/mybatis/" data-mce-href="http://code.google.com/p/mybatis/">http://code.google.com/p/mybatis/</a>&nbsp;（Mybatis核心包）</p>
<p>　　　　mybatis-generator-core-1.3.1.jar =&gt; 下载地址： <a href="http://code.google.com/p/mybatis/wiki/Generator" data-mce-href="http://code.google.com/p/mybatis/wiki/Generator">http://code.google.com/p/mybatis/wiki/Generator</a>&nbsp;（Mybatis自动生成配置文件包）</p>
<p>　　　　mysql-connector-java-5.1.26-bin.jar =&gt; 下载地址：<a href="http://dev.mysql.com/downloads/connector/j/" data-mce-href="http://dev.mysql.com/downloads/connector/j/">http://dev.mysql.com/downloads/connector/j/</a>&nbsp;（Mysql 的jdbc驱动包）</p>
<p>　　</p>
<p>　　接下来大家可以再Eclipse下面建一个名为MybatisDemo的Java Project项目，按照如下图中所示新建相应的包结构和文件夹结构，其中config与mapper分别为文件夹，</p>
<p>　　包david.mybatis.demo与包david.mybatis.model下分别存放相应的demo运行程序与Javabean对象，lib文件夹下存放刚刚下载的那几个第三方jar包。</p>
<p>　　　　　　　　　　　　<img alt="" src="http://images.cnitblog.com/blog/302948/201312/22002841-eef763f1534a40769f8fca29c2583270.png" data-mce-src="http://images.cnitblog.com/blog/302948/201312/22002841-eef763f1534a40769f8fca29c2583270.png" height="552" width="377" /></p>
<p data-mce-="">　　</p>
<p>　　建完下面的目录，我们可以添加相应的Jar包，如下图</p>
<p>　　<img alt="" src="http://images.cnitblog.com/blog/302948/201312/22003636-8116a3b7f8164f16befcb46ff33e8879.png" data-mce-src="http://images.cnitblog.com/blog/302948/201312/22003636-8116a3b7f8164f16befcb46ff33e8879.png" height="620" width="849" /><img alt="" src="http://images.cnitblog.com/blog/302948/201312/22003648-210d3efe5f3941d0b36c47797ca9e0ba.png" data-mce-src="http://images.cnitblog.com/blog/302948/201312/22003648-210d3efe5f3941d0b36c47797ca9e0ba.png" height="96" width="309" /></p>
<p>&nbsp;　　完成后，执行下面SQL，建立DEMO所需的表结构，分别有3张表，Visitor（访问者表），Website（网站表），Channel（频道表）　</p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_121159" onclick="this.style.display='none'; Code_Closed_Text_121159.style.display='none'; Code_Open_Image_121159.style.display='inline'; Code_Open_Text_121159.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_121159" style="display: none" onclick="this.style.display='none'; Code_Open_Text_121159.style.display='none'; Code_Closed_Image_121159.style.display='inline'; Code_Closed_Text_121159.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_121159" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">建表SQL</span><span id="Code_Open_Text_121159" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">/*</span><span style="color: #008000; ">创建Visitor</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
CREATE&nbsp;TABLE&nbsp;Visitor<br />
(<br />
&nbsp;&nbsp;&nbsp;&nbsp;Id&nbsp;INT(</span><span style="color: #000000; ">11</span><span style="color: #000000; ">)&nbsp;NOT&nbsp;NULL&nbsp;AUTO_INCREMENT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;VARCHAR(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">)&nbsp;NOT&nbsp;NULL,<br />
&nbsp;&nbsp;&nbsp;&nbsp;Email&nbsp;VARCHAR(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">)&nbsp;NOT&nbsp;NULL,<br />
&nbsp;&nbsp;&nbsp;&nbsp;Status&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;DEFAULT&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;CreateTime&nbsp;DateTime,<br />
&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY&nbsp;KEY(Id)<br />
)<br />
</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">创建网站表</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
CREATE&nbsp;TABLE&nbsp;Website<br />
(<br />
&nbsp;&nbsp;&nbsp;&nbsp;Id&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;PRIMARY&nbsp;KEY&nbsp;AUTO_INCREMENT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;VARCHAR(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">)&nbsp;NOT&nbsp;NULL,<br />
&nbsp;&nbsp;&nbsp;&nbsp;VisitorId&nbsp;INT&nbsp;REFERENCES&nbsp;Visitor(Id),<br />
&nbsp;&nbsp;&nbsp;&nbsp;Status&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;DEFAULT&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;CreateTime&nbsp;DateTime<br />
)<br />
<br />
</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">创建频道表</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
CREATE&nbsp;TABLE&nbsp;Channel<br />
(<br />
&nbsp;&nbsp;&nbsp;&nbsp;Id&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;PRIMARY&nbsp;KEY&nbsp;AUTO_INCREMENT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;VARCHAR(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">)&nbsp;NOT&nbsp;NULL,<br />
&nbsp;&nbsp;&nbsp;&nbsp;WebsiteId&nbsp;INT&nbsp;REFERENCES&nbsp;Website(Id),<br />
&nbsp;&nbsp;&nbsp;&nbsp;Status&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;DEFAULT&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;CreateTime&nbsp;DateTime<br />
)<br />
</span></span></div>
<p>&nbsp;</p>
<div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 所有这些都完成后，我们就要开始动手啦~</div>
<br />
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 就像开头说的，Mybatis的所有配置都源于一份XML配置文件，我们需要在config文件夹下，新建名为mybatis_demo_config.xml的配置文件，这一份东西就是我们后面所需要操作的核心之一。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在配置这个文件<span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><strong>千万要注意</strong><span style="background-color: #ffffff;" data-mce-style="background-color: #ffffff;">&lt;configuration&gt;节点内的元素都是</span><strong>有层级顺序</strong></span><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><span style="background-color: #ffffff;" data-mce-style="background-color: #ffffff;">的要求的，不能够随意更换次序，否则在加载xml配置文件的时候会出现异常而导致后续操作不成功。</span></span></p>
<p><span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><span style="background-color: #ffffff;" data-mce-style="background-color: #ffffff;">具体的节点说明大家可以查看<a href="http://mybatis.github.io/mybatis-3/zh/configuration.html" data-mce-href="http://mybatis.github.io/mybatis-3/zh/configuration.html">http://mybatis.github.io/mybatis-3/zh/configuration.html</a>#，这里只说比较常用的节点，typeAliases，environments，mappers。</span></span></p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 1. typeAliases =&gt; 别名节点，可以通过设置这个节点的属性，这样配置文件中其他需要实体名字的地方都可以使用此别名而不是完全限定名，例如 &lt;typeAlias type="david.mybatis.model.Visitor" alias="Visitor" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 2. environments =&gt; 环境节点，配置数据连接相关的信息</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. mappers =&gt; 配置SQL映射语句。</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 最简单的配置如下：<br />
</p>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_121443" onclick="this.style.display='none'; Code_Closed_Text_121443.style.display='none'; Code_Open_Image_121443.style.display='inline'; Code_Open_Text_121443.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_121443" style="display: none" onclick="this.style.display='none'; Code_Open_Text_121443.style.display='none'; Code_Closed_Image_121443.style.display='inline'; Code_Closed_Text_121443.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_121443" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">XML配置</span><span id="Code_Open_Text_121443" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;configuration<br />
&nbsp;&nbsp;PUBLIC&nbsp;"-//mybatis.org//DTD&nbsp;Config&nbsp;3.0//EN"&nbsp;<br />
&nbsp;&nbsp;"http://mybatis.org/dtd/mybatis-3-config.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">configuration</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">typeAliases</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">typeAlias&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="david.mybatis.model.Visitor"</span><span style="color: #FF0000; ">&nbsp;alias</span><span style="color: #0000FF; ">="Visitor"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">typeAliases</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">environments&nbsp;</span><span style="color: #FF0000; ">default</span><span style="color: #0000FF; ">="development"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">environment&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="development"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">transactionManager&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="JDBC"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">transactionManager</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dataSource&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="POOLED"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="driver"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="com.mysql.jdbc.Driver"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;?useUnicode=true&amp;amp;characterEncoding=utf8为了支持中文数据的写入&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="url"</span><span style="color: #FF0000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value</span><span style="color: #0000FF; ">="jdbc:mysql://127.0.0.1:3306/mybatis_db?useUnicode=true&amp;amp;characterEncoding=utf8"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="username"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="root"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="password"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="123456"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dataSource</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">environment</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">environments</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mappers</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mapper&nbsp;</span><span style="color: #FF0000; ">resource</span><span style="color: #0000FF; ">="mapper/VisitorMapper.xml"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mappers</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">configuration</span><span style="color: #0000FF; ">&gt;</span></span></div>
</div>
<p>在包david.mybatis.demo下面新建一个名为MyBatisUtils类，里面存放获取SqlSession与关闭SqlSession的方法，提炼出来方便多次复用。</p>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_121555" onclick="this.style.display='none'; Code_Closed_Text_121555.style.display='none'; Code_Open_Image_121555.style.display='inline'; Code_Open_Text_121555.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_121555" style="display: none" onclick="this.style.display='none'; Code_Open_Text_121555.style.display='none'; Code_Closed_Image_121555.style.display='inline'; Code_Closed_Text_121555.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_121555" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">MybatisUtils类</span><span id="Code_Open_Text_121555" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;david.mybatis.demo;<br />
<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.InputStream;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.io.Resources;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.session.SqlSession;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.session.SqlSessionFactory;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.apache.ibatis.session.SqlSessionFactoryBuilder;<br />
<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;david.mybatis.model.CRUD_Enum;<br />
<br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;MybatisUtils&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;String&nbsp;CONFIG_PATH&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">config/mybatis_demo_config.xml</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获取数据库访问链接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;SqlSession&nbsp;getSqlSession()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;stream&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Resources.getResourceAsStream(CONFIG_PATH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">可以根据配置的相应环境读取相应的数据库环境<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;SqlSessionFactory&nbsp;factory&nbsp;=&nbsp;new&nbsp;SqlSessionFactoryBuilder().build(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;stream,&nbsp;"development");&nbsp;</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSessionFactory&nbsp;factory&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SqlSessionFactoryBuilder()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.build(stream);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;factory.openSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;session;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获取数据库访问链接<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;closeSession(SqlSession&nbsp;session)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;返回操作记录消息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;showMessages(CRUD_Enum&nbsp;type,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;count)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">switch</span><span style="color: #000000; ">&nbsp;(type)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;Add:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">添加了</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">条记录。</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;Delete:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">删除了</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">条记录。</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;Update:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">更新了</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">条记录。</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;Query:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">匹配了</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">条记录。</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;List:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">共有</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;count&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">条记录。</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">default</span><span style="color: #000000; ">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></span></div>
</div>
<p>在包david.mybatis.model下面新建一个名为Visitor的类，用来作相应的OR Mapping。</p>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_121709" onclick="this.style.display='none'; Code_Closed_Text_121709.style.display='none'; Code_Open_Image_121709.style.display='inline'; Code_Open_Text_121709.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_121709" style="display: none" onclick="this.style.display='none'; Code_Open_Text_121709.style.display='none'; Code_Closed_Image_121709.style.display='inline'; Code_Closed_Text_121709.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_121709" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">Visit类</span><span id="Code_Open_Text_121709" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;david.mybatis.model;<br />
<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.text.SimpleDateFormat;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Date;<br />
<br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Visitor&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;email;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;status;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Date&nbsp;createTime;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Visitor()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;constructor&nbsp;stub</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createTime&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Visitor(String&nbsp;name,&nbsp;String&nbsp;email)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.email&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;email;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.status&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.createTime&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getId()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setEmail(String&nbsp;email)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.email&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;email;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getEmail()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;email;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Date&nbsp;getCreateTime()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;createTime;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;toString()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;String.format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">{Id:&nbsp;%d,&nbsp;Name:&nbsp;%s,&nbsp;CreateTime:&nbsp;%s}</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;id,&nbsp;name,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SimpleDateFormat(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">yyyy-MM-dd&nbsp;HH:mm:ss</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).format(createTime));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></span></div>
</div>
<p>在包david.mybatis.demo下面新建一个VisitorMapper.xml，用来映射相应SQL语句。</p>
<p>这里要注意namespace=&gt;<span style="background-color: #ffff00;" data-mce-style="background-color: #ffff00;"><strong>david.mybatis.demo.IVisitorOperation一定要与对应这个包下面的实际文件名，IVisitorOperation否则无法成功加载相应的映射文件</strong></span></p>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_122007" onclick="this.style.display='none'; Code_Closed_Text_122007.style.display='none'; Code_Open_Image_122007.style.display='inline'; Code_Open_Text_122007.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_122007" style="display: none" onclick="this.style.display='none'; Code_Open_Text_122007.style.display='none'; Code_Closed_Image_122007.style.display='inline'; Code_Closed_Text_122007.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_122007" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">VisitorMapper配置</span><span id="Code_Open_Text_122007" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mapper&nbsp;</span><span style="color: #FF0000; ">namespace</span><span style="color: #0000FF; ">="david.mybatis.demo.IVisitorOperation"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;此处的resultType就是对应刚刚你在typeAlias节点里面规定的别名&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">select&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="basicQuery"</span><span style="color: #FF0000; ">&nbsp;parameterType</span><span style="color: #0000FF; ">="int"</span><span style="color: #FF0000; ">&nbsp;resultType</span><span style="color: #0000FF; ">="Visitor"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;visitor&nbsp;where&nbsp;id=#{id}&nbsp;and<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Status&gt;0&nbsp;order&nbsp;by&nbsp;Id<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">select</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mapper</span><span style="color: #0000FF; ">&gt;</span></span></div>
</div>
<p>接下来运行下面的程序</p>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><img id="Code_Closed_Image_122047" onclick="this.style.display='none'; Code_Closed_Text_122047.style.display='none'; Code_Open_Image_122047.style.display='inline'; Code_Open_Text_122047.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_122047" style="display: none" onclick="this.style.display='none'; Code_Open_Text_122047.style.display='none'; Code_Closed_Image_122047.style.display='inline'; Code_Closed_Text_122047.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_122047" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">基本查询</span><span id="Code_Open_Text_122047" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;testBasicQuery(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MybatisUtils.getSqlSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Visitor&nbsp;visitor&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Visitor)&nbsp;session.selectOne(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">david.mybatis.demo.IVisitorOperation.basicQuery</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MybatisUtils.closeSession(session);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(visitor);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</div>
<p>&nbsp;</p>
<div>一个最简单的执行结果就出来啦</div>
<p>&nbsp;</p>
<p><img alt="" src="http://images.cnitblog.com/blog/302948/201312/22013249-b231841941c44c19b32dc86d4d657f00.png" data-mce-src="http://images.cnitblog.com/blog/302948/201312/22013249-b231841941c44c19b32dc86d4d657f00.png" /></p>
<p>这算是Mybatis系列的HelloWord，下回会讲述关于使用接口的方式进行相应操作。</p>
</div><img src ="http://www.blogjava.net/davidjefiny/aggbug/407863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/davidjefiny/" target="_blank">红烧狮子头</a> 2013-12-22 12:23 <a href="http://www.blogjava.net/davidjefiny/archive/2013/12/22/Mybatis.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>