﻿<?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-alexprefect-文章分类-mybatis</title><link>http://www.blogjava.net/alexprefect/category/51264.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 31 Mar 2012 00:36:29 GMT</lastBuildDate><pubDate>Sat, 31 Mar 2012 00:36:29 GMT</pubDate><ttl>60</ttl><item><title>Mybatis SQL映射文件（转载）</title><link>http://www.blogjava.net/alexprefect/articles/372968.html</link><dc:creator>alexprefect</dc:creator><author>alexprefect</author><pubDate>Thu, 29 Mar 2012 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/alexprefect/articles/372968.html</guid><wfw:comment>http://www.blogjava.net/alexprefect/comments/372968.html</wfw:comment><comments>http://www.blogjava.net/alexprefect/articles/372968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexprefect/comments/commentRss/372968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexprefect/services/trackbacks/372968.html</trackback:ping><description><![CDATA[<p>前面学习的都是一些配置，mybatis的精华也就集中在SQL的映射文件上，相比实现相同功能的jdbc代码，节约了95%的代码量。</p><p><br /></p><p><span style="white-space: pre;"></span>&lt;!-- 配置给定命名空间的缓存 --&gt;<br /><span style="white-space: pre;"></span>&lt;cache&gt;&lt;/cache&gt;<br /></p><p><span style="white-space: pre;"></span>&lt;!-- 从其他命名空间引用缓存配置 --&gt;<br /><span style="white-space: pre;"></span>&lt;cache-ref namespace="" /&gt;<br /></p><p><span style="white-space: pre;"></span>&lt;!-- 描述如何将db中查询的结果集加载成对象 --&gt;<br /><span style="white-space: pre;"></span>&lt;resultMap type="" id=""&gt;<br /><span style="white-space: pre;"></span>&lt;constructor&gt;<br /><span style="white-space: pre;"></span>&lt;idArg /&gt;<br /><span style="white-space: pre;"></span>&lt;arg /&gt;<br /><span style="white-space: pre;"></span>&lt;arg /&gt;<br /><span style="white-space: pre;"></span>&lt;arg /&gt;<br /><span style="white-space: pre;"></span>&lt;/constructor&gt;<br /><span style="white-space: pre;"></span>&lt;/resultMap&gt;<br /></p><p><span style="white-space: pre;"></span>&lt;!-- 定义可重用的sql语句 --&gt;<br /><span style="white-space: pre;"></span>&lt;sql id=""&gt;&lt;/sql&gt;<br /></p><p><span style="white-space: pre;"></span>&lt;!-- 映射dml语句 --&gt;<br /><span style="white-space: pre;"></span>&lt;insert id=""&gt;&lt;/insert&gt;<br /><span style="white-space: pre;"></span>&lt;select id=""&gt;&lt;/select&gt;<br /><span style="white-space: pre;"></span>&lt;update id=""&gt;&lt;/update&gt;<br /><span style="white-space: pre;"></span>&lt;delete id=""&gt;&lt;/delete&gt;<br /></p><p><br /></p><p><br /></p><p>一、select可以可以说是使用最多的元素，使用也很简单</p><p>&nbsp;</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">select</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"getUserById"</span><span> </span><span class="attribute">parameterType</span><span>=</span><span class="attribute-value">"int"</span><span> </span><span class="attribute">resultType</span><span>=</span><span class="attribute-value">"User"</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; select * from tbl_user where <span class="attribute">id</span><span> = #{id}&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">    &lt;select id="getUserById" parameterType="int" resultType="User"&gt;
        select * from tbl_user where id = #{id}
    &lt;/select&gt;</textarea><br />&lt; select&gt;元素中的一些属性(红色为用的较多的属性)<p>&nbsp;</p><p><table border="1" cellspacing="1" cellpadding="1" width="400"><tbody><tr><td><span style="color: rgb(255, 0, 0);">id </span></td><td>在命名空间中唯一的标识符，可以被用来引用这条语句</td></tr><tr><td><span style="color: rgb(255, 0, 0);">parameterType</span></td><td>将会传入这条语句的参数类的完全限定名或别名。</td></tr><tr><td><span style="color: rgb(255, 0, 0);">resultType </span></td><td>从这条语句中返回的期望类型的类的完全限定名或别名。<br />意集合情形，那应该是集合可以包含的类型，<br />而不能是集合本身。使用 <span style="color: rgb(255, 0, 0);">resultType或 resultMap，<br />但不能同时使用</span>。（可以是基本类型int等，<br />复合类型User，集合类型map,list等）</td></tr><tr><td><span style="color: rgb(255, 0, 0);">resultMap </span></td><td>命名引用外部的resultMap。返回map是MyBat is<br /> 最具力量的特性，对其有一个很好的理解的话，<br />多复杂映射的情形就能被解决了。<br /><span style="color: rgb(255, 0, 0);">使用 resultMap 或resultType，但不能同时使用</span>。</td></tr><tr><td>flushCache </td><td>将其设置为 true，不论语句什么时候被带哦用，<br />都会导致缓存被清空。默认值：false</td></tr><tr><td>useCache </td><td>将其设置为 true，将会导致本条语句的结果被缓存。<br />默认值：true</td></tr><tr><td>timeout&nbsp; </td><td>这个设置驱动程序等待数据库返回请求结果，并抛出<br />异常时间的最大等待值。默认不设置（驱动自行处理）</td></tr><tr><td>fetchSize </td><td>这是暗示驱动程序每次批量返回的结果行数。<br />默认不设置（驱动自行处理）</td></tr><tr><td>statementType </td><td>STATEMENT,PREPARED 或 CALLABLE 的一种。<br />这会让 MyBat is使用选择使用 <br />Statement，PreparedStatement或 CallableStatement。<br />默认值：PREPARED。</td></tr><tr><td>resultSetType</td><td>FORWARD_ONLY，<br />SCROLL_SENSITIVE，<br />SCROLL_INSENSITIVE中的一种。<br />默认是不设置（驱动自行处理）</td></tr><tr><td> </td><td> </td></tr><tr><td> </td><td> </td></tr></tbody></table><br /><p>&nbsp;</p><p>二、insert插入数据库，进行插入操作时主要是要拿到插入数据自增的主键</p><p><span style="font-size: 16px;"></span><table border="1" cellspacing="1" cellpadding="1" width="600"><tbody><tr><td><span style="color: rgb(255, 0, 0);">id </span></td><td>在命名空间中唯一的标识符，可以被用来引用这条语句。</td></tr><tr><td><span style="color: rgb(255, 0, 0);"><span style="color: rgb(255, 0, 0);">parameterType </span><br /></span></td><td>将会传入这条语句的参数类的完全限定名或别名</td></tr><tr><td>flushCache </td><td>将其设置为 true，不论语句什么时候被带哦用，都会导致缓存被清空。默认值：false。</td></tr><tr><td>timeout</td><td>这个设置驱动程序等待数据库返回请求结果，并抛出异常时间的最大等待值。<br />默认不设置（驱动自行处理）。 </td></tr><tr><td>statementType</td><td>STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBat is使用选择使用 <br />Statement，PreparedStatement 或 CallableStatement。默认值：PREPARED。 </td></tr><tr><td><span style="color: rgb(255, 0, 0);">useGeneratedKeys</span></td><td>（<span style="color: rgb(255, 0, 0);">仅对 insert 有 用</span> ） 这 会 告 诉 MyBat is 使用 JDBC 的getGeneratedKeys 方法来取出由数据（比如：像 MySQL 和 SQL Server 这样的数据库管理系统的自动递增字段）内部生成的主键。默认值：false。</td></tr><tr><td><span style="color: rgb(255, 0, 0);">keyProperty</span></td><td>（<span style="color: rgb(255, 0, 0);">仅对insert有用</span>） 标记一个属性， MyBat is会通过getGeneratedKeys或者通过 insert 语句的selectKey 子元素设置它的值。默认：不设置。</td></tr><tr><td> </td><td> </td></tr></tbody></table><br /><p>&nbsp;</p><p><span style="font-size: 16px;">在进行insert，update,delete之后session要进行commit操作，不然数据库不会更新到数据库</span></p><p><span style="font-size: 16px;">insert的Demo</span></p><p><span style="font-size: 16px;">另一种获取主键的方法</span></p><p><span style="font-size: 16px;"></span></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">insert</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"addUserLastId"</span><span> </span><span class="attribute">parameterType</span><span>=</span><span class="attribute-value">"User"</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">selectKey</span><span> </span><span class="attribute">resultType</span><span>=</span><span class="attribute-value">"int"</span><span> </span><span class="attribute">order</span><span>=</span><span class="attribute-value">"AFTER"</span><span> </span><span class="attribute">keyProperty</span><span>=</span><span class="attribute-value">"id"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT LAST_INSERT_ID() AS id&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">selectKey</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; insert into tbl_user(name,age) values(#{name},#{age})&nbsp; </span></li><li><span class="tag">&lt;/</span><span class="tag-name">insert</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">    &lt;insert id="addUserLastId" parameterType="User"&gt;
    	&lt;selectKey resultType="int" order="AFTER" keyProperty="id"&gt;
    		SELECT LAST_INSERT_ID() AS id
    	&lt;/selectKey&gt;
    	insert into tbl_user(name,age) values(#{name},#{age})
    &lt;/insert&gt;</textarea><br /><br /><p>&nbsp;</p><p><span style="font-size: 16px;"><br /></span></p><p><span style="font-size: 16px;"></span></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">insert</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"addUser"</span><span> </span><span class="attribute">parameterType</span><span>=</span><span class="attribute-value">"User"</span><span> </span><span class="attribute">keyProperty</span><span>=</span><span class="attribute-value">"id"</span><span> </span><span class="attribute">useGeneratedKeys</span><span>=</span><span class="attribute-value">"true"</span><span> </span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; insert into tbl_user(name,age) values(#{name},#{age})&nbsp; </span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">insert</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">    &lt;insert id="addUser" parameterType="User" keyProperty="id" useGeneratedKeys="true" &gt;
    	insert into tbl_user(name,age) values(#{name},#{age})
    &lt;/insert&gt;</textarea><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-j"><li class="alt"><span class="annotation">@Test</span><span>&nbsp; </span></li><li><span class="keyword">public</span><span> </span><span class="keyword">void</span><span> testInsert() </span><span class="keyword">throws</span><span> IOException {&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; UserMapper mapper = session.getMapper(UserMapper.<span class="keyword">class</span><span>) ;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; User user = <span class="keyword">new</span><span> User() ;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; user.setName(<span class="string">"zhangss"</span><span>) ;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; user.setAge(<span class="number">22</span><span>) ;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="keyword">int</span><span> i = mapper.addUser(user) ;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; session.commit() ;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; session.close() ;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; System.out.println(<span class="string">"id:"</span><span>+i+</span><span class="string">"--"</span><span>+user.getId());&nbsp; </span></span></li><li class="alt"><span>}&nbsp; </span></li></ol></div><textarea style="display: none;" class="java" readonly="" name="code">	@Test
	public void testInsert() throws IOException {
		UserMapper mapper = session.getMapper(UserMapper.class) ; 
		User user = new User() ;
		user.setName("zhangss") ;
		user.setAge(22) ;
		int i = mapper.addUser(user) ;
		session.commit() ;
		session.close() ;
		System.out.println("id:"+i+"--"+user.getId());
	}</textarea><br /><br /><p>update的Demo</p><p>&nbsp;</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">update</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"updateUser"</span><span> </span><span class="attribute">parameterType</span><span>=</span><span class="attribute-value">"User"</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; update tbl_user set <span class="attribute">name</span><span> = #{name} ,</span><span class="attribute">age</span><span> = #{age} where </span><span class="attribute">id</span><span> = #{id}&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">update</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">    &lt;update id="updateUser" parameterType="User"&gt;
    	update tbl_user set name = #{name} ,age = #{age} where id = #{id}
    &lt;/update&gt;</textarea><br /><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-j"><li class="alt"><span class="annotation">@Test</span><span>&nbsp; </span></li><li><span class="keyword">public</span><span> </span><span class="keyword">void</span><span> testUpdate(){&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; UserMapper mapper = session.getMapper(UserMapper.<span class="keyword">class</span><span>) ;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; User user = <span class="keyword">new</span><span> User() ;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; user.setId(<span class="number">27</span><span>) ;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; user.setName(<span class="string">"zhang27"</span><span>) ;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; user.setAge(<span class="number">227</span><span>) ;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">int</span><span> i = mapper.updateUser(user) ;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; session.commit() ;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; session.close() ;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; System.out.println(<span class="string">"id:"</span><span>+i+</span><span class="string">"--"</span><span>+user.getId());&nbsp; </span></span></li><li><span>}&nbsp; </span></li></ol></div><textarea style="display: none;" class="java" readonly="" name="code">	@Test
	public void testUpdate(){
		UserMapper mapper = session.getMapper(UserMapper.class) ; 
		User user = new User() ;
		user.setId(27) ;
		user.setName("zhang27") ;
		user.setAge(227) ;
		int i = mapper.updateUser(user) ;
		session.commit() ;
		session.close() ;
		System.out.println("id:"+i+"--"+user.getId());
	}</textarea><br /><br /><p>三、sql定义可重用的sql语句</p><p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">sql</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"selectItem"</span><span class="tag">&gt;</span><span>id,name,age</span><span class="tag">&lt;/</span><span class="tag-name">sql</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;sql id="selectItem"&gt;id,name,age&lt;/sql&gt;</textarea><p>&nbsp;</p><p><br /></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">select</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"getUserById"</span><span> </span><span class="attribute">parameterType</span><span>=</span><span class="attribute-value">"int"</span><span> </span><span class="attribute">resultType</span><span>=</span><span class="attribute-value">"User"</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="comments">&lt;!-- </span> </span></li><li><span class="comments">&nbsp;&nbsp;&nbsp; select * from tbl_user where id = #{id}</span> </li><li class="alt"><span class="comments">&nbsp;&nbsp;&nbsp;&nbsp; --&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp; select <span class="tag">&lt;</span><span class="tag-name">include</span><span> </span><span class="attribute">refid</span><span>=</span><span class="attribute-value">"selectItem"</span><span class="tag">/&gt;</span><span> from tbl_user where </span><span class="attribute">id</span><span> = #{id}&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">    &lt;select id="getUserById" parameterType="int" resultType="User"&gt;
    	
    	&lt;!-- 
        select * from tbl_user where id = #{id}
         --&gt;
         select &lt;include refid="selectItem"/&gt; from tbl_user where id = #{id}
    &lt;/select&gt;</textarea><p><br /></p>四、Parameter<p><br /></p><p>#{department, mode=OUT, jdbcType=CURSOR, javaType=ResultSet,resultMap=departmentResultMap} <br /><br /><br /></p><p>&nbsp;</p><p>五、resultMap所做的工作就是将从数据库中获取的ResultSet结果集放入指定的对象中，避免大量的setter getter代码，实现自动装配的功能，实现结果的映射</p><p><br /></p><p>1、简单映射</p><p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">select</span><span> </span><span class="attribute">id</span><span>=&#8221;selectUsers&#8221; </span><span class="attribute">parameterType</span><span>=&#8221;int&#8221; </span><span class="attribute">resultType</span><span>=&#8221;hashmap&#8221;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; select id, username, hashedPassword from some_table where <span class="attribute">id</span><span> = #{id}&nbsp;&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;select id=&#8221;selectUsers&#8221; parameterType=&#8221;int&#8221; resultType=&#8221;hashmap&#8221;&gt; 
	select id, username, hashedPassword from some_table where id = #{id} 
&lt;/select&gt; </textarea><br />所有列被自动映射到 HashMap 的键上，key为列名，value为数据库中的数据<br /><p>&nbsp;</p><p><br /></p><p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">select</span><span> </span><span class="attribute">id</span><span>=&#8221;selectUsers&#8221; </span><span class="attribute">parameterType</span><span>=&#8221;int&#8221; </span><span class="attribute">resultType</span><span>=&#8221;com.someapp.model.User&#8221;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; select id, username, hashedPassword from some_table where <span class="attribute">id</span><span> = #{id}&nbsp;&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;select id=&#8221;selectUsers&#8221; parameterType=&#8221;int&#8221; resultType=&#8221;com.someapp.model.User&#8221;&gt; 
	select id, username, hashedPassword from some_table where id = #{id} 
&lt;/select&gt; </textarea><br />将所有从数据库中取得数据自动装配到JavaBean中，如果列名与属性名相同，则无需作任务的干预即可完成装配。<p>&nbsp;</p><p>如果数据库中的列名与javabean的属性名称不同可以在查询的时候取别名，如</p><p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">select</span><span> </span><span class="attribute">id</span><span>=&#8221;selectUsers&#8221; </span><span class="attribute">parameterType</span><span>=&#8221;int&#8221; </span><span class="attribute">resultType</span><span>=&#8221;User&#8221;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; select user_id as &#8220;id&#8221;, user_name as &#8220;userName&#8221;, hashed_password as &#8220;hashedPassword&#8221;&nbsp; from some_table where <span class="attribute">id</span><span> = #{id}&nbsp;&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;select id=&#8221;selectUsers&#8221; parameterType=&#8221;int&#8221; resultType=&#8221;User&#8221;&gt; 
	select user_id as &#8220;id&#8221;, user_name as &#8220;userName&#8221;, hashed_password as &#8220;hashedPassword&#8221;  from some_table where id = #{id} 
&lt;/select&gt; </textarea><br />也可以使用resultMap进行映射的指定<p>&nbsp;</p><p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7232466#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">resultMap</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"userResultMap"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"User"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">id</span><span> </span><span class="attribute">property</span><span>=</span><span class="attribute-value">"id"</span><span> </span><span class="attribute">column</span><span>=</span><span class="attribute-value">"user_id"</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">result</span><span> </span><span class="attribute">property</span><span>=</span><span class="attribute-value">"username"</span><span> </span><span class="attribute">column</span><span>=</span><span class="attribute-value">"username"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">result</span><span> </span><span class="attribute">property</span><span>=</span><span class="attribute-value">"password"</span><span> </span><span class="attribute">column</span><span>=</span><span class="attribute-value">"password"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">resultMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">select</span><span> </span><span class="attribute">id</span><span>=&#8221;selectUsers&#8221; </span><span class="attribute">parameterType</span><span>=&#8221;int&#8221;&nbsp; </span><span class="attribute">resultMap</span><span>=&#8221;userResultMap&#8221;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; select user_id, user_name, hashed_password from some_table where <span class="attribute">id</span><span> = #{id}&nbsp;&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;resultMap id="userResultMap" type="User"&gt; 
	&lt;id property="id" column="user_id" /&gt; 
	&lt;result property="username" column="username"/&gt; 
	&lt;result property="password" column="password"/&gt; 
&lt;/resultMap&gt; 

&lt;select id=&#8221;selectUsers&#8221; parameterType=&#8221;int&#8221;  resultMap=&#8221;userResultMap&#8221;&gt; 
	select user_id, user_name, hashed_password from some_table where id = #{id} 
&lt;/select&gt; </textarea><br /><br /><p>&nbsp;</p><p>2、resultMap高级映射</p><p><br /></p><img src ="http://www.blogjava.net/alexprefect/aggbug/372968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexprefect/" target="_blank">alexprefect</a> 2012-03-29 11:08 <a href="http://www.blogjava.net/alexprefect/articles/372968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mybatis 配置文件（转载）</title><link>http://www.blogjava.net/alexprefect/articles/372967.html</link><dc:creator>alexprefect</dc:creator><author>alexprefect</author><pubDate>Thu, 29 Mar 2012 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/alexprefect/articles/372967.html</guid><wfw:comment>http://www.blogjava.net/alexprefect/comments/372967.html</wfw:comment><comments>http://www.blogjava.net/alexprefect/articles/372967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexprefect/comments/commentRss/372967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexprefect/services/trackbacks/372967.html</trackback:ping><description><![CDATA[<p>这篇文章学习的是mybatis的主配置文件Configuration.xml，这个配置文件主要配置一些全局的属性，如数据库的连接，类的别名，不同的</p><p>场景运行不同的配置等等。</p><p><br /></p><p>一、Configuration.xml中可以配置的所有内容</p><p><br /></p><p><table style="font-size: 16px;" border="0" cellspacing="1" cellpadding="1" width="600"><tbody><tr><td>configuration 配置</td><td> </td><td> </td><td> </td></tr><tr><td> </td><td><span style="color: rgb(255, 0, 0);">properties</span> 属性</td><td> </td><td> </td></tr><tr><td> </td><td>settings 设置 </td><td> </td><td> </td></tr><tr><td> </td><td><span style="color: rgb(255, 0, 0);">typeAliases</span> 类型命名</td><td> </td><td> </td></tr><tr><td> </td><td>typeHandlers 类型处理器 </td><td> </td><td> </td></tr><tr><td> </td><td>objectFactory 对象工厂 </td><td> </td><td> </td></tr><tr><td> </td><td>plugins 插件</td><td> </td><td> </td></tr><tr><td> </td><td><span style="color: rgb(255, 0, 0);">environments </span>环境</td><td> </td><td> </td></tr><tr><td> </td><td> </td><td>environment 环境变量 </td><td> </td></tr><tr><td> </td><td> </td><td> </td><td><span style="color: rgb(255, 0, 0);">transactionManager</span> 事务管理器 </td></tr><tr><td> </td><td> </td><td> </td><td><span style="color: rgb(255, 0, 0);">dataSource</span> 数据源 </td></tr><tr><td> </td><td><span style="color: rgb(255, 0, 0);">映射器</span></td><td> </td><td> </td></tr></tbody></table><br /><p>&nbsp;</p><p><br /></p><p><br /></p><p>二、Properties标签</p><p><span style="white-space: pre;"></span>可以用来引用外部的属性文件进行配置，比如所有的配置都在一个eas.properties中配置，只需要在properties中配置一次，就可以做到一次配置到处引用。</p><p><span style="white-space: pre;"></span>如现在配置一个eas.properties</p><p>&nbsp;</p><div class="dp-highlighter bg_plain"><div class="bar"><div class="tools"><strong>[plain]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol><li class="alt"><span>#db config&nbsp; </span></li><li><span>db.driver:com.sybase.jdbc3.jdbc.SybDriver&nbsp; </span></li><li class="alt"><span>db.url:jdbc:sybase:Tds:192.168.2.143:2678/SMM_win2k8_portal&nbsp; </span></li><li><span>db.username:dba&nbsp; </span></li><li class="alt"><span>db.password:smmsql&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span>#server config&nbsp; </span></li><li><span>server.url:http://192.168.2.101:8080/EAS&nbsp; </span></li></ol></div><textarea style="display: none;" class="plain" readonly="" name="code">#db config
db.driver:com.sybase.jdbc3.jdbc.SybDriver
db.url:jdbc:sybase:Tds:192.168.2.143:2678/SMM_win2k8_portal
db.username:dba
db.password:smmsql

#server config
server.url:http://192.168.2.101:8080/EAS</textarea><br />在configuration.xml中对属性文件中的值进行引用<p>&nbsp;</p><p>&nbsp;</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?&gt;</span><span>&nbsp; </span></li><li><span>&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"&nbsp; </span></li><li class="alt"><span> "http://mybatis.org/dtd/mybatis-3-config.dtd"<span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;</span><span class="tag-name">configuration</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">properties</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"eas.properties"</span><span> </span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">environments</span><span> </span><span class="attribute">default</span><span>=</span><span class="attribute-value">"development"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">environment</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"development"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">transactionManager</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"JDBC"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">dataSource</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"POOLED"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"driver"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"${db.driver}"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"url"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"${db.url}"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"username"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"${db.username}"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"password"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"${db.password}"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">dataSource</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">environment</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">environments</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">configuration</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;
&lt;configuration&gt;
	&lt;properties resource="eas.properties" /&gt;
	
    &lt;environments default="development"&gt;
        &lt;environment id="development"&gt;
            &lt;transactionManager type="JDBC"/&gt;
            &lt;dataSource type="POOLED"&gt;
                &lt;property name="driver" value="${db.driver}"/&gt;
                &lt;property name="url" value="${db.url}"/&gt;
                &lt;property name="username" value="${db.username}"/&gt;
                &lt;property name="password" value="${db.password}"/&gt;
            &lt;/dataSource&gt;
        &lt;/environment&gt;
    &lt;/environments&gt;
&lt;/configuration&gt;</textarea><br /><br /><p>&nbsp;</p><p>三、Setteing标签，对mybatis的一些行为进行设置</p><p><img alt="" src="http://hi.csdn.net/attachment/201202/2/0_1328189466F6yl.gif" /><br /></p><p><br /></p><p>配置</p><p>&lt;settings&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="cacheEnabled" value="true"/&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="lazyLoadingEnabled" value="true"/&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="multipleResultSetsEnabled" value="true"/&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="useColumnLabel" value="true"/&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="useGeneratedKeys" value="false"/&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="enhancementEnabled" value="false"/&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="defaultExecutorType" value="SIMPLE"/&gt; <br /><span style="white-space: pre;"></span>&lt;setting name="defaultStatementTimeout" value="25000"/&gt; <br />&lt; /settings&gt; <br /></p><p><br /></p><p>四、typeAliases 为一类设置别名，方便书写</p><p><br /></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">typeAliases</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="comments">&lt;!-- simple alias for full class name --&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span> </span><span class="attribute">alias</span><span>=</span><span class="attribute-value">"App"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"com.justsy.eas.domain.App"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span> </span><span class="attribute">alias</span><span>=</span><span class="attribute-value">"Content"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"com.justsy.eas.domain.Content"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span> </span><span class="attribute">alias</span><span>=</span><span class="attribute-value">"AppDevice"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"com.justsy.eas.domain.AppDevice"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span> </span><span class="attribute">alias</span><span>=</span><span class="attribute-value">"ListApp"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"com.justsy.eas.http.domain.ListApp"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span> </span><span class="attribute">alias</span><span>=</span><span class="attribute-value">"ClientApp"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"com.justsy.eas.http.domain.ClientApp"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">typeAliases</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">	&lt;typeAliases&gt;
		&lt;!-- simple alias for full class name --&gt;
		&lt;typeAlias alias="App" type="com.justsy.eas.domain.App"/&gt;
		&lt;typeAlias alias="Content" type="com.justsy.eas.domain.Content"/&gt;
		&lt;typeAlias alias="AppDevice" type="com.justsy.eas.domain.AppDevice"/&gt;
		&lt;typeAlias alias="ListApp" type="com.justsy.eas.http.domain.ListApp"/&gt;
		&lt;typeAlias alias="ClientApp" type="com.justsy.eas.http.domain.ClientApp"/&gt;
	&lt;/typeAliases&gt;</textarea><br />java 中一些简单类型的别名<p>&nbsp;</p><p>别名&nbsp; <span style="white-space: pre;"> </span><span style="white-space: pre;"></span>映射的类型 <br />_byte&nbsp; <span style="white-space: pre;"> <span style="white-space: pre;"></span></span>byte <br />_long&nbsp; <span style="white-space: pre;"> <span style="white-space: pre;"></span></span>long <br />_short&nbsp; <span style="white-space: pre;"> </span>short <br />_int&nbsp;&nbsp; <span style="white-space: pre;"></span>int&nbsp; <br />_integer&nbsp;&nbsp; <span style="white-space: pre;"></span>int&nbsp; <br />_double&nbsp; <span style="white-space: pre;"> </span>double <br />_float&nbsp;&nbsp; <span style="white-space: pre;"></span>float&nbsp; <br />_boolean&nbsp; <span style="white-space: pre;"> </span>boolean <br />string&nbsp; <span style="white-space: pre;"> </span>String <br />byte&nbsp; <span style="white-space: pre;"> </span>Byte <br />long&nbsp; <span style="white-space: pre;"> </span>Long <br />short&nbsp; <span style="white-space: pre;"> </span>Short <br />int&nbsp;&nbsp; <span style="white-space: pre;"></span>Integer <br />integer&nbsp;&nbsp; <span style="white-space: pre;"></span>Integer <br />double&nbsp; <span style="white-space: pre;"> </span>Double <br />float&nbsp;&nbsp; <span style="white-space: pre;"></span>Float&nbsp; <br />boolean&nbsp; <span style="white-space: pre;"> </span>Boolean <br />date&nbsp; <span style="white-space: pre;"> </span>Date <br />decimal&nbsp; <span style="white-space: pre;"> </span>BigDecimal <br />bigdecimal&nbsp; <span style="white-space: pre;"> </span>BigDecimal <br />object&nbsp; <span style="white-space: pre;"> </span>Object <br />map&nbsp; <span style="white-space: pre;"> </span>Map <br />hashmap&nbsp; <span style="white-space: pre;"> </span>HashMap <br />list&nbsp; <span style="white-space: pre;"> </span>List&nbsp; <br />arraylist&nbsp; <span style="white-space: pre;"> </span>ArrayList <br />collection&nbsp; <span style="white-space: pre;"> </span>Collection <br />iterator&nbsp; <span style="white-space: pre;"> </span>Iterator<br /></p><p><br /></p><p>五、typeHandlers 的作用是将Java类型与数据库中类型进行匹配，在statement设值和ResultSet检索值时可以正确的转换，可以实现TypeHandler接口实现自己的类型处理器。mybatis中内建的类型处理器(Type Handler )</p><p><img alt="" src="http://hi.csdn.net/attachment/201202/2/0_1328190746HkII.gif" /><br /></p><p><br /></p><p>六、ObjectFactory&nbsp;&nbsp;&nbsp; 每次创建新的结果对象是调用这个ObjectFactory的对象来进行创建，它会比直接调用构造函数创建对象做更多的工作</p><p><br /></p><p>七、plugins主要用来实现拦截器的功能，使用到了动态代理，可以指定在某些操作时执行一些拦截操作，比如在一条记录插入数据库之前写入一条日志，或查询一下</p><p>权限等等</p><p>&nbsp; Executor <br />(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) <br />&nbsp; ParameterHandler&nbsp; <br />(getParameterObject, setParameters) <br />&nbsp; ResultSetHandler&nbsp; <br />(handleResultSets, handleOutputParameters) <br />&nbsp; StatementHandler&nbsp; <br />(prepare, parameterize, batch, update, query) <br /></p><p><br /></p><p>&nbsp;</p><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-j"><li class="alt"><span class="comment">// ExamplePlugin.java</span><span>&nbsp; </span></li><li><span class="annotation">@Intercepts</span><span>({ </span><span class="annotation">@Signature</span><span>(type = Executor.</span><span class="keyword">class</span><span>, method = </span><span class="string">"update"</span><span>, args = { MappedStatement.</span><span class="keyword">class</span><span>, Object.</span><span class="keyword">class</span><span> }) })&nbsp; </span></li><li class="alt"><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> ExamplePlugin </span><span class="keyword">implements</span><span> Interceptor {&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> Object intercept(Invocation invocation) </span><span class="keyword">throws</span><span> Throwable {&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">return</span><span> invocation.proceed();&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> Object plugin(Object target) {&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">return</span><span> Plugin.wrap(target, </span><span class="keyword">this</span><span>);&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setProperties(Properties properties) {&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li><span>}&nbsp; </span></li></ol></div><textarea style="display: none;" class="java" readonly="" name="code">	// ExamplePlugin.java
	@Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })
	public class ExamplePlugin implements Interceptor {
		public Object intercept(Invocation invocation) throws Throwable {
			return invocation.proceed();
		}

		public Object plugin(Object target) {
			return Plugin.wrap(target, this);
		}

		public void setProperties(Properties properties) {
		}
	}</textarea><br /><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">plugins</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp; <span class="tag">&lt;</span><span class="tag-name">plugin</span><span> </span><span class="attribute">interceptor</span><span>=</span><span class="attribute-value">"org.mybatis.example.ExamplePlugin"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"someProperty"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"100"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; </span></span></li><li><span>&nbsp; <span class="tag">&lt;/</span><span class="tag-name">plugin</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">plugins</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">	&lt;plugins&gt; 
	  &lt;plugin interceptor="org.mybatis.example.ExamplePlugin"&gt; 
	    &lt;property name="someProperty" value="100"/&gt; 
	  &lt;/plugin&gt; 
	&lt;/plugins&gt; </textarea><br />就会在所有执行update动作之前进行拦截，执行ExamplePlugin中自定义的一些逻辑<p>&nbsp;</p><p>对select进行拦截的plugin</p><p>&nbsp;</p><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-j"><li class="alt"><span class="keyword">import</span><span> org.apache.ibatis.session.ResultHandler;&nbsp; </span></li><li><span class="keyword">import</span><span> org.apache.ibatis.session.RowBounds;&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span class="annotation">@Intercepts</span><span>({ </span><span class="annotation">@Signature</span><span>(args = { MappedStatement.</span><span class="keyword">class</span><span>, Object.</span><span class="keyword">class</span><span>, RowBounds.</span><span class="keyword">class</span><span>, ResultHandler.</span><span class="keyword">class</span><span> }, method = </span><span class="string">"query"</span><span>, type = Executor.</span><span class="keyword">class</span><span>) })&nbsp; </span></li><li class="alt"><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> LogInterceptor </span><span class="keyword">implements</span><span> Interceptor {&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="keyword">int</span><span> index;&nbsp; </span></span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="annotation">@Override</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> Object intercept(Invocation invocation) </span><span class="keyword">throws</span><span> Throwable {&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(<span class="string">"some log!!!"</span><span>);&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">return</span><span> invocation.proceed();&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="annotation">@Override</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> Object plugin(Object target) {&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(<span class="string">"1223--------------"</span><span> + (index++));&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">return</span><span> Plugin.wrap(target, </span><span class="keyword">this</span><span>);&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="annotation">@Override</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setProperties(Properties properties) {&nbsp; </span></span></li><li class="alt"><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li class="alt"><span>}&nbsp; </span></li></ol></div><textarea style="display: none;" class="java" readonly="" name="code">import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;

@Intercepts({ @Signature(args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class }, method = "query", type = Executor.class) })
public class LogInterceptor implements Interceptor {

	int index;

	@Override
	public Object intercept(Invocation invocation) throws Throwable {
		System.out.println("some log!!!");
		return invocation.proceed();
	}

	@Override
	public Object plugin(Object target) {
		System.out.println("1223--------------" + (index++));
		return Plugin.wrap(target, this);
	}

	@Override
	public void setProperties(Properties properties) {

	}
}</textarea><br /><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">plugins</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">plugin</span><span> </span><span class="attribute">interceptor</span><span>=</span><span class="attribute-value">"com.akwolf.interceptor.LogInterceptor"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">plugin</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">plugins</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">	&lt;plugins&gt;
    	&lt;plugin interceptor="com.akwolf.interceptor.LogInterceptor"&gt;
    	&lt;/plugin&gt;
    &lt;/plugins&gt;</textarea><br /><br /><p>&nbsp;</p><p>八、environments 对于一个应用可能连接多个数据库，那就需要配置不同的环境来连接不同的数据库，每一个SqlSessionFactory对应一个environments</p><p>也可以设置不同的环境应用于开发或测试的环境</p><p>如果环境被忽略，那么默认环境将会被加载，也就是default="development"的作用了<br /></p><p><br /></p><p>九、transactionManager设置事物的管理类型是 type=&#8221;[JDBC|MANAGED]&#8221;</p><p><span style="white-space: pre;"></span>JDBC使用datasource的连接来管理事物范围。</p><p><span style="white-space: pre;">MANAGED</span>自己不进行事物的提交和回滚，依靠容器来管理事物，设置closeConnection为false，取消自动关闭连接</p><p>&nbsp;</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7229614#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;</span><span class="tag-name">transactionManager</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"MANAGED"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"closeConnection"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"false"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; </span></span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">transactionManager</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;transactionManager type="MANAGED"&gt; 
	&lt;property name="closeConnection" value="false"/&gt; 
&lt;/transactionManager&gt; </textarea><br />十、dataSource设置数据源[UNPOOLED|POOLED|JNDI]<p>&nbsp;</p><p>POOLED:每次被请求时简单打开和关闭连接<br /></p><p>POOLED:JDBC 连接对象的数据源连接池的实现，用来避免创建新的连接实例时必要的初始连接和认证时间。<br /></p><p><span style="white-space: pre;">poolMaximumActiveConnections &#8211;&nbsp; 在任意时间存在的活动（也就是正在使用）连接的数量。默认值：10 </span></p><p><span style="white-space: pre;">poolMaximumIdleConnections &#8211;&nbsp; 任意时间存在的空闲连接数。</span></p><p><span style="white-space: pre;">oolMaximumCheckoutTime &#8211;&nbsp; 在被强制返回之前，池中连接被检查的时间。默认值：20000 毫秒（也就是 20 秒）</span></p><p><span style="white-space: pre;">poolTimeToWait&nbsp; &#8211;&nbsp; 这是给连接池一个打印日志状态机会的低层次设置，还有重新尝试获得连接，这些情况下往往需要很长时间（为了避免连接池没有配置时静默失败）。 默认值：20000 毫秒（也就是 20 秒）</span></p><p><span style="white-space: pre;">poolPingQuery &#8211;&nbsp; 发送到数据的侦测查询，用来验证连接是否正常工作，并且准备接受请求。默认是&#8220;NO PING QUERY SET&#8221;，这会引起许多数据库驱动连接由一个错误信 息而导致失败。 </span></p><p><span style="white-space: pre;">poolPingEnabled&nbsp; &#8211;&nbsp; 这是开启或禁用侦测查询。如果开启，你必须用一个合法的SQL语句（最好是很快速的）设置 poolPingQuery 属性。默认值：false。</span></p><p><span style="white-space: pre;">poolPingConnectionsNotUsedFor&nbsp; &#8211;&nbsp; 这是用来配置 poolPingQuery 多次时间被用一次。这可以被设置匹配标准的数据库连接超时时间，来避免不必要的侦测。默认值：0 （也就是所有连接每一时刻都被侦测-但仅仅当 poolPingEnabled 为 true 时适用）。&nbsp; </span></p><p>JNDI &#8211;&nbsp; 这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器，容器可以集中或在外部配置数据源，然后放置一个 JNDI 上下文的引用。<br /></p><p><span style="white-space: pre;">initial_context&nbsp; &#8211;&nbsp; 这个属性用来从初始上下文中寻找环境（也就是initialContext.lookup（init ial&#8212;&#8212;context））。这是个可选属性，如果被忽略，那么data_source 属性将 会直接以 init ialContext 为背景再次寻找。 </span></p><p><span style="white-space: pre;">data_source&nbsp; &#8211;&nbsp; 这是引用数据源实例位置的上下文的路径。它会以由 init ial_context查询返回的环境为背景来查找，如果 init ial_context 没有返回结果时，直接以初始上下 文为环境来查找。 </span></p><p><br /></p><p><br /></p><p>十一、mappers用来注册映射文件。</p><p><br /></p> <img src ="http://www.blogjava.net/alexprefect/aggbug/372967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexprefect/" target="_blank">alexprefect</a> 2012-03-29 11:07 <a href="http://www.blogjava.net/alexprefect/articles/372967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mybatis环境搭建（转载）</title><link>http://www.blogjava.net/alexprefect/articles/372966.html</link><dc:creator>alexprefect</dc:creator><author>alexprefect</author><pubDate>Thu, 29 Mar 2012 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/alexprefect/articles/372966.html</guid><wfw:comment>http://www.blogjava.net/alexprefect/comments/372966.html</wfw:comment><comments>http://www.blogjava.net/alexprefect/articles/372966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alexprefect/comments/commentRss/372966.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alexprefect/services/trackbacks/372966.html</trackback:ping><description><![CDATA[<p>最近一段时间过的有些迷茫了，好了不能在这样了，楼主决定振作起来开始好好学习一些东西吧。研究mybatis吧！</p><p><br /></p><p>万里之行起于小步，从搭建环境开始。</p><p><br /></p><p>一、下载好jar包，既然是基本环境搭建就不用弄的太复杂就加入三个最基本的jar包</p><p><span style="white-space: pre;"></span>1、mybatis-3.1.0-SNAPSHOT.jar</p><p><span style="white-space: pre;"></span>2、mysql-connector-java-5.0.8-bin.jar</p><p><span style="white-space: pre;"></span>3、log4j-1.2.16.jar</p><p><br /></p><p>二、mybatis是基于log4j日志框架的，恩，把log4j的日志数据配置文件也配置一下，就先把级别设定在debug的级别上</p><p>&nbsp;</p><div class="dp-highlighter bg_plain"><div class="bar"><div class="tools"><strong>[plain]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">?</font></u></a></div></div><ol><li class="alt"><span># Rules reminder:&nbsp; </span></li><li><span># DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span># Global logging configuration&nbsp; </span></li><li class="alt"><span>log4j.rootLogger=DEBUG, stdout&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span># My logging configuration...&nbsp; </span></li><li><span>log4j.logger.org.mybatis.jpetstore=DEBUG&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span>## Console output...&nbsp; </span></li><li class="alt"><span>log4j.appender.stdout=org.apache.log4j.ConsoleAppender&nbsp; </span></li><li><span>log4j.appender.stdout.layout=org.apache.log4j.PatternLayout&nbsp; </span></li><li class="alt"><span>log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n  </span></li></ol></div><textarea style="display: none;" class="plain" readonly="" name="code"># Rules reminder:
# DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL

# Global logging configuration
log4j.rootLogger=DEBUG, stdout

# My logging configuration...
log4j.logger.org.mybatis.jpetstore=DEBUG

## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n</textarea><br />三、现在就开始对mybatis进行配置，配置文件为一个xml文件，文件名自己决定，暂且就叫Configuration.xml吧<p>&nbsp;</p><p><br /></p><p>&nbsp;</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?&gt;</span><span>&nbsp; </span></li><li><span>&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"&nbsp; </span></li><li class="alt"><span> "http://mybatis.org/dtd/mybatis-3-config.dtd"<span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp; </span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">configuration</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">typeAliases</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comments">&lt;!-- simple alias for full class name --&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span> </span><span class="attribute">alias</span><span>=</span><span class="attribute-value">"User"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"com.akwolf.domain.User"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">typeAliases</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">environments</span><span> </span><span class="attribute">default</span><span>=</span><span class="attribute-value">"development"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">environment</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"development"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">transactionManager</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"JDBC"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">dataSource</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"POOLED"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"driver"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"com.mysql.jdbc.Driver"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"url"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"jdbc:mysql://192.168.2.110:3306/mybatis"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"username"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"zhangh"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"password"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"123456"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">dataSource</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">environment</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">environments</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">mappers</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">mapper</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"com/akwolf/persistence/UserMapper.xml"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">mappers</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">configuration</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;

&lt;configuration&gt;
	&lt;typeAliases&gt;
		&lt;!-- simple alias for full class name --&gt;
		&lt;typeAlias alias="User" type="com.akwolf.domain.User"/&gt;
	&lt;/typeAliases&gt;
    &lt;environments default="development"&gt;
        &lt;environment id="development"&gt;
            &lt;transactionManager type="JDBC"/&gt;
            &lt;dataSource type="POOLED"&gt;
                &lt;property name="driver" value="com.mysql.jdbc.Driver"/&gt;
                &lt;property name="url" value="jdbc:mysql://192.168.2.110:3306/mybatis"/&gt;
                &lt;property name="username" value="zhangh"/&gt;
                &lt;property name="password" value="123456"/&gt;
            &lt;/dataSource&gt;
        &lt;/environment&gt;
    &lt;/environments&gt;
    &lt;mappers&gt;
        &lt;mapper resource="com/akwolf/persistence/UserMapper.xml"/&gt;
    &lt;/mappers&gt;
&lt;/configuration&gt;</textarea><p>&nbsp;</p><p><br /></p><p>上面这个配置文件相当于一个全局的配置，所以在这里面配置也会影响到其他的配置文件</p><p>这里先对上面几个标签陌生标签解释一下</p><p>&lt;typeAliases&gt;就是为为一个完整的类名去一个别名，我猜你不会愿意在每次用到一个类时都把类的完整路劲给带上，所以上面的User就可以代表com.akwolf.domain.User<br /></p><p>这样做的确是一件很省力气的事</p><p>&lt;environments default="development"&gt;也就是在不同的环境中选择不同的配置，如果现在是开发环境连接的数据库可能就与测试连接数据库的配置不同，default代表的就是一个默认使用的环境。</p>&lt;mappers&gt;也就是注册你写了哪些Mapper映射文件。<br />这个就先简单介绍一下，下一篇文章就把每一个标签的使用和用处罗嗦一遍。<br /><p>四、建立领域模型User</p><p><br /></p><p>&nbsp;</p><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-j"><li class="alt"><span class="keyword">import</span><span> java.io.Serializable;&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> User </span><span class="keyword">implements</span><span> Serializable {&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">final</span><span> </span><span class="keyword">long</span><span> serialVersionUID = 1L;&nbsp; </span></span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="keyword">private</span><span> </span><span class="keyword">int</span><span> id;&nbsp; </span></span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="keyword">private</span><span> String name;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">private</span><span> </span><span class="keyword">int</span><span> age;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="comment">//setter &amp;&amp; getter</span><span>&nbsp; </span></span></li><li class="alt"><span>}&nbsp; </span></li></ol></div><textarea style="display: none;" class="java" readonly="" name="code">import java.io.Serializable;


public class User implements Serializable {
	private static final long serialVersionUID = 1L;

	private int id;

	private String name;
	private int age;
	
	//setter &amp;&amp; getter
}</textarea><br /><br /><p>&nbsp;</p><p><br /></p><p>&nbsp;</p><p>五、建立对数据库操作的dao接口</p><p>&nbsp;</p><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-j"><li class="alt"><span class="keyword">package</span><span> com.akwolf.persistence;&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span class="keyword">import</span><span> com.akwolf.domain.User;&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span class="keyword">public</span><span> </span><span class="keyword">interface</span><span> UserMapper {&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="comment">/**</span> </span></li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * 通过id查询用户</span> </li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * </span> </li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * @param id</span> </li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用户id</span> </li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; * @return 用户实体</span> </li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp; */</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> User getUserById(</span><span class="keyword">int</span><span> id);&nbsp; </span></span></li><li class="alt"><span>}&nbsp; </span></li></ol></div><textarea style="display: none;" class="java" readonly="" name="code">package com.akwolf.persistence;

import com.akwolf.domain.User;

public interface UserMapper {

	/**
	 * 通过id查询用户
	 * 
	 * @param id
	 *            用户id
	 * @return 用户实体
	 */
	public User getUserById(int id);
}</textarea><br />六、编写对dao接口进行实现的Mapper【UserMapper.xml】，就是一些sql语句<p>&nbsp;</p><p>&nbsp;</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-xml"><li class="alt"><span class="tag">&lt;?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?&gt;</span><span>&nbsp; </span></li><li><span>&lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"&nbsp; </span></li><li class="alt"><span> "http://mybatis.org/dtd/mybatis-3-mapper.dtd"<span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;</span><span class="tag-name">mapper</span><span> </span><span class="attribute">namespace</span><span>=</span><span class="attribute-value">"com.akwolf.persistence.UserMapper"</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">select</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"getUserById"</span><span> </span><span class="attribute">parameterType</span><span>=</span><span class="attribute-value">"int"</span><span> </span><span class="attribute">resultType</span><span>=</span><span class="attribute-value">"User"</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select * from tbl_user where <span class="attribute">id</span><span> = #{id}&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">mapper</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><textarea style="display: none;" class="html" readonly="" name="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;
&lt;mapper namespace="com.akwolf.persistence.UserMapper"&gt;
    &lt;select id="getUserById" parameterType="int" resultType="User"&gt;
        select * from tbl_user where id = #{id}
    &lt;/select&gt;
&lt;/mapper&gt;</textarea><br />#{id}表示传入的参数，是一个变量<p>&nbsp;</p><p>到此一个基本的mybatis运行环境已经搭建起来，用测试类测试一下</p><p><br /></p><p>&nbsp;</p><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/akwolf/article/details/7226781#"><u><font color="#0066cc">?</font></u></a></div></div><ol class="dp-j"><li class="alt"><span class="keyword">package</span><span> com.akwolf.test;&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span class="keyword">import</span><span> java.io.IOException;&nbsp; </span></li><li><span class="keyword">import</span><span> java.io.Reader;&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span class="keyword">import</span><span> org.apache.ibatis.io.Resources;&nbsp; </span></li><li class="alt"><span class="keyword">import</span><span> org.apache.ibatis.session.SqlSession;&nbsp; </span></li><li><span class="keyword">import</span><span> org.apache.ibatis.session.SqlSessionFactory;&nbsp; </span></li><li class="alt"><span class="keyword">import</span><span> org.apache.ibatis.session.SqlSessionFactoryBuilder;&nbsp; </span></li><li><span class="keyword">import</span><span> org.junit.AfterClass;&nbsp; </span></li><li class="alt"><span class="keyword">import</span><span> org.junit.BeforeClass;&nbsp; </span></li><li><span class="keyword">import</span><span> org.junit.Test;&nbsp; </span></li><li class="alt"><span>&nbsp; </span></li><li><span class="keyword">import</span><span> com.akwolf.domain.User;&nbsp; </span></li><li class="alt"><span class="keyword">import</span><span> com.akwolf.persistence.UserMapper;&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> UserTest {&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> SqlSession session ;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="annotation">@BeforeClass</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> init(){&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 配置文件的路径</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String res = <span class="string">"com/akwolf/conf/Configuration.xml"</span><span> ;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">try</span><span> {&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 1、加载配置文件</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reader reader = Resources.getResourceAsReader(res);&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 2、创建SqlSessionFactory，用于取得SqlSession</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlSessionFactory factory = <span class="keyword">new</span><span> SqlSessionFactoryBuilder().build(reader) ;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 3、取得一个SqlSession(对Jdbc中connection的封装)</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session = factory.openSession() ;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <span class="keyword">catch</span><span> (IOException e) {&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li><span>&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="annotation">@Test</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> testGet() {&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 4、取得mybatis实现并实例化好的UserMapper接口实例</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserMapper mapper = session.getMapper(UserMapper.<span class="keyword">class</span><span>) ;&nbsp;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 5、进行dao层的操作</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User u = mapper.getUserById(<span class="number">1</span><span>) ;&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(u);&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="annotation">@AfterClass</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> destory(){&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 6、关闭SqlSession</span><span>&nbsp; </span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.close() ;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li class="alt"><span>}&nbsp; </span></li></ol></div><textarea style="display: none;" class="java" readonly="" name="code">package com.akwolf.test;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.akwolf.domain.User;
import com.akwolf.persistence.UserMapper;

public class UserTest {
	
	private static SqlSession session ;
	
	@BeforeClass
	public static void init(){
		// 配置文件的路径
		String res = "com/akwolf/conf/Configuration.xml" ;
		try {
			// 1、加载配置文件
			Reader reader = Resources.getResourceAsReader(res);
			// 2、创建SqlSessionFactory，用于取得SqlSession
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader) ;
			// 3、取得一个SqlSession(对Jdbc中connection的封装)
			session = factory.openSession() ;
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}

	@Test
	public void testGet() {
		// 4、取得mybatis实现并实例化好的UserMapper接口实例
		UserMapper mapper = session.getMapper(UserMapper.class) ; 
		// 5、进行dao层的操作
		User u = mapper.getUserById(1) ;
		System.out.println(u);
	}
	
	@AfterClass
	public static void destory(){
		// 6、关闭SqlSession
		session.close() ;
	}
}
</textarea><br /><p>&nbsp;</p><p>上面测试类的主要建立数据库连接并对数据库进行的操作，为了方便以后查看和大家的理解，注释写的很详细。</p><p><br /></p><p>好，到这里第一个mybatis程序运行成功，下一次就研究一下Mybatis配置文件的详细配置。</p><p><br /></p><img src ="http://www.blogjava.net/alexprefect/aggbug/372966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alexprefect/" target="_blank">alexprefect</a> 2012-03-29 11:06 <a href="http://www.blogjava.net/alexprefect/articles/372966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>