﻿<?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-把永恒在一刹那间收藏-文章分类-ibatis</title><link>http://www.blogjava.net/gm_jing/category/14833.html</link><description>生活之点点滴滴</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:35:16 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:35:16 GMT</pubDate><ttl>60</ttl><item><title>ibatis学习</title><link>http://www.blogjava.net/gm_jing/articles/67594.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 04 Sep 2006 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/67594.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/67594.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/67594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/67594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/67594.html</trackback:ping><description><![CDATA[
		<p> </p>
		<p> </p>
		<p>1.查询<br />(1)联合查询:使用一个sql查询<br />(2)子查询:对于每个表使用一个sql查询<br />基本的原则是，如果您需要访问相关的对象，则使用联合查询。否则，使用延迟加载和字节码增强选项的子查询。</p>
		<p> </p>
		<p>
				<br />2.配置文件分析<br /> &lt;resultMap id="UserResult" class="User"&gt;<br />  &lt;result property="id" column="id"/&gt;<br />  &lt;result property="name" column="name"/&gt;<br />  &lt;result property="sex" column="sex"/&gt;<br />  &lt;result property="addresses" column="id" select="selectAddressByUserId"/&gt;<br /> &lt;/resultMap&gt;<br /> <br />使用的preparedstatement来处理sql，得到记录，如何设置对象<br /> a. user.setId(id)  --&gt;id:  column<br /> b. 如果有select属性，则column 作为查询条件插入<br /> <br /> </p>
		<p>
				<br /> <br /> <br />3.集合<br />让SQL Map架构装入复杂类型集合（List）的业务对象的属性必须是java.util.List或java.util.Collection类型。 <br /><font color="#ff0000">为什么set，hashset报错？？？</font></p>
		<p> </p>
		<p>4.<br />重要提示！目前SQL Map架构无法自动解决resultMap之间的双向关系。这在处理“父/子” 双向关系的resultMap时尤其要注意。<br />一个简单的办法是，为其中一种情况再定义一个不装入父对象的resultMap（反之亦然）。</p>
		<p> </p>
		<p> </p>
		<p>
		</p>
		<hr />
		<br />代码例子<br />例子1：执行update（insert，update，delete）<br />sqlMap.startTransaction();<br />Product product = new Product();<br />product.setId (1);<br />product.setDescription (“Shih Tzu”);<br />int rows = sqlMap.insert (“insertProduct”, product);<br />sqlMap.commitTransaction();
<p><br />例子2：查询成对象（select）<br />sqlMap.startTransaction();<br />Integer key = new Integer (1);<br />Product product = (Product)sqlMap.queryForObject (“getProduct”, key);<br />sqlMap.commitTransaction();</p><p><br />例子3：用预赋值的结果对象查询成对象（select）<br />sqlMap.startTransaction();<br />Customer customer = new Customer();<br />sqlMap.queryForObject(“getCust”, parameterObject, customer);<br />sqlMap.queryForObject(“getAddr”, parameterObject, customer);<br />sqlMap.commitTransaction();</p><p><br />例子4：查询成对象List（select）<br />sqlMap.startTransaction();<br />List list = sqlMap.queryForList (“getProductList”, null);<br />sqlMap.commitTransaction();</p><p><br />例子5：自动提交<br />//当没调用startTransaction的情况下，statements会自动提交。<br />//没必要commit/rollback。<br />int rows = sqlMap.insert (“insertProduct”, product);</p><p><br />例子6：用结果集边界查询成对象List（select）<br />sqlMap.startTransaction();<br />List list = sqlMap.queryForList (“getProductList”, null, 0, 40);<br />sqlMap.commitTransaction();</p><p><br />例子7：用RowHandler执行查询（select）<br />public class MyRowHandler implements RowHandler {<br />public void handleRow (Object object, List list) throws SQLException {<br />Product product = (Product) object;<br />product.setQuantity (10000);<br />sqlMap.update (“updateProduct”, product);<br />// Optionally you could add the result object to the list.<br />// The list is returned from the queryForList() method.<br />}<br />}<br />sqlMap.startTransaction();<br />RowHandler rowHandler = new MyRowHandler();<br />List list = sqlMap.queryForList (“getProductList”, null, rowHandler);<br />sqlMap.commitTransaction();</p><p><br />例子8：查询成Paginated List（select）<br />PaginatedList list =<br />sqlMap.queryForPaginatedList (“getProductList”, null, 10);<br />list.nextPage();<br />list.previousPage();</p><p><br />例子9：查询成Map（select）<br />sqlMap.startTransaction();<br />Map map = sqlMap.queryForMap (“getProductList”, null, “productCode”);<br />sqlMap.commitTransaction();<br />Product p = (Product) map.get(“EST-93”);</p><p> </p><img src ="http://www.blogjava.net/gm_jing/aggbug/67594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2006-09-04 15:37 <a href="http://www.blogjava.net/gm_jing/articles/67594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>