﻿<?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-MicroFish-随笔分类-ibatis</title><link>http://www.blogjava.net/liulu/category/14909.html</link><description>Open &amp; Open
&lt;a href="http://www.fastwebcounter.com" title="Free Web Counter"&gt;&lt;font color="red"&gt;&lt;script src="http://fastwebcounter.com/secure.php?s=www.blogjava.net/liulu"&gt;&lt;/script&gt;hits&lt;/font&gt;&lt;/a&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:57:30 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:57:30 GMT</pubDate><ttl>60</ttl><item><title>持久化框架、ORM框架、DAO设计模式之间的关系</title><link>http://www.blogjava.net/liulu/archive/2006/09/20/70812.html</link><dc:creator>刘璐</dc:creator><author>刘璐</author><pubDate>Wed, 20 Sep 2006 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/liulu/archive/2006/09/20/70812.html</guid><wfw:comment>http://www.blogjava.net/liulu/comments/70812.html</wfw:comment><comments>http://www.blogjava.net/liulu/archive/2006/09/20/70812.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liulu/comments/commentRss/70812.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liulu/services/trackbacks/70812.html</trackback:ping><description><![CDATA[ORM框架是一种持久化框架，DAO是用于实现持久化框架的一种设计模式<img src ="http://www.blogjava.net/liulu/aggbug/70812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liulu/" target="_blank">刘璐</a> 2006-09-20 15:21 <a href="http://www.blogjava.net/liulu/archive/2006/09/20/70812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编写你的第一个ibatis程序</title><link>http://www.blogjava.net/liulu/archive/2006/09/05/67754.html</link><dc:creator>刘璐</dc:creator><author>刘璐</author><pubDate>Tue, 05 Sep 2006 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/liulu/archive/2006/09/05/67754.html</guid><wfw:comment>http://www.blogjava.net/liulu/comments/67754.html</wfw:comment><comments>http://www.blogjava.net/liulu/archive/2006/09/05/67754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liulu/comments/commentRss/67754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liulu/services/trackbacks/67754.html</trackback:ping><description><![CDATA[
		<p>
				<strong>##首先准备一个JavaBean吧，这是最基本的。鉴于是一个基础的测试程序，就简单一点好了。如下：<br />package com.testidatis.sample;</strong>
		</p>
		<p>
				<strong>import java.io.*;<br />import java.util.*;</strong>
		</p>
		<p>
				<strong>public class User implements Serializable {<br /> private String id;<br /> private String pwd;<br /> private String xb;<br /> private String grqk;<br /> public String getGrqk() {<br />  return grqk;<br /> }<br /> public void setGrqk(String grqk) {<br />  this.grqk = grqk;<br /> }<br /> public String getId() {<br />  return id;<br /> }<br /> public void setId(String id) {<br />  this.id = id;<br /> }<br /> public String getPwd() {<br />  return pwd;<br /> }<br /> public void setPwd(String pwd) {<br />  this.pwd = pwd;<br /> }<br /> public String getXb() {<br />  return xb;<br /> }<br /> public void setXb(String xb) {<br />  this.xb = xb;<br /> }<br />}<br /><br /><br />##下一步就是SQL MAP的配置文件，也写一个最简单的，其他属性可以参照网上的教程，网址是</strong>
				<a href="http://www.baidu.com">
						<strong>http://www.baidu.com</strong>
				</a>
				<strong>  和  </strong>
				<a href="http://www.google.com">
						<strong>http://www.google.com</strong>
				</a>
				<strong>  连接数据库的参数我直接写入配置文件了，也可以写在一个*.properties的配置文件中。代码如下：<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE sqlMapConfig      <br />    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      <br />    "</strong>
				<a href="http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
						<strong>http://ibatis.apache.org/dtd/sql-map-config-2.dtd</strong>
				</a>
				<strong>"&gt;<br />&lt;sqlMapConfig&gt;<br /> &lt;transactionManager type="JDBC"&gt;<br />  &lt;dataSource type="SIMPLE"&gt;<br />      &lt;property name="JDBC.Driver" value="org.hsqldb.jdbcDriver"/&gt;<br />   &lt;property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver" /&gt;<br />   &lt;property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@192.168.1.90:1521:orcl" /&gt;<br />   &lt;property name="JDBC.Username" value="fortest" /&gt;<br />   &lt;property name="JDBC.Password" value="123" /&gt;<br />  &lt;/dataSource&gt;<br />  &lt;/transactionManager&gt;<br />  &lt;sqlMap resource="com/testidatis/sample/User.xml" /&gt;<br />&lt;/sqlMapConfig&gt;<br /><br />##第三步了：SQL Map的映射文件<br />这一步没什么好说的，跟普通的T-SQL语句很类似，网上看资料吧！<br />代码如下：<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;</strong>
		</p>
		<p>
				<strong>&lt;!DOCTYPE sqlMap      <br />    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      <br />    "</strong>
				<a href="http://ibatis.apache.org/dtd/sql-map-2.dtd">
						<strong>http://ibatis.apache.org/dtd/sql-map-2.dtd</strong>
				</a>
				<strong>"&gt;<br />&lt;sqlMap namespace="User"&gt;<br /> &lt;typeAlias alias="user" type="com.testidatis.sample.User" /&gt;<br /> <br /> &lt;select id="getUser" parameterClass="java.lang.String" resultClass="user"&gt;<br />   select id,pwd,xb from t_user<br />   where id=#id#<br /> &lt;/select&gt;<br /> <br /> &lt;update id="updateUser" parameterClass="user"&gt;<br />  &lt;![CDATA[<br />  update t_user <br />  set pwd=#pwd#,<br />      xb=#xb#<br />  where id=#id#<br /> ]]&gt;<br /> &lt;/update&gt;<br /> <br /> &lt;insert id="insertUser" parameterClass="user"&gt;<br />  insert into t_user(id,pwd,xb) values(#id#,#pwd#,#xb#)<br /> &lt;/insert&gt;<br /> <br /> &lt;delete id="deleteUser" parameterClass="java.lang.String"&gt;<br />  delete from t_user where id=#id#<br /> &lt;/delete&gt;<br />&lt;/sqlMap&gt;<br /><br />##最后一步：测试咱们的ibatis吧<br />package com.testidatis.sample;</strong>
		</p>
		<p>
				<strong>import java.io.IOException;<br />import java.io.Reader;<br />import java.sql.SQLException;</strong>
		</p>
		<p>
				<strong>import com.ibatis.common.resources.Resources;</strong>
		</p>
		<p>
				<strong>import com.ibatis.sqlmap.client.SqlMapClient;<br />import com.ibatis.sqlmap.client.SqlMapClientBuilder;<br />import com.ibatis.common.resources.Resources;<br />public class TestMain {</strong>
		</p>
		<p>
				<strong> /**<br />  * @param args<br />  * @throws IOException <br />  * @throws SQLException <br />  */<br /> public static void main(String[] args) throws IOException, SQLException {<br />  <br />  // TODO Auto-generated method stub<br />  String resource="com/testidatis/sample/SqlMapConfig.xml";<br />  Reader reader;<br />  <br />  reader=Resources.getResourceAsReader(resource);<br />  //SqlMapClientBuilder xmlBuilder=new SqlMapClientBuilder();<br />   <br />  SqlMapClient sqlMap=SqlMapClientBuilder.buildSqlMapClient(reader);<br />   try{<br />   sqlMap.startTransaction();<br />   User user=new User();<br />   user.setId("00100");<br />   user.setPwd("Erica");<br />   user.setXb("F");<br />   sqlMap.insert("insertUser",user);<br />   sqlMap.commitTransaction();<br />   <br />   }catch(Exception e){<br />    System.out.println("连接数据出错");<br />   }<br />   finally{<br />    sqlMap.endTransaction();<br />   }<br />   System.out.println("连接数据库成功");<br />  }<br />}<br />其实也没什么难的，多看教程就OK了！<br />测试类中的部分代码也可以封装一下，简单工厂模式就可以，返回类型？那当然是SqlMapClient的了，呵呵。<br />数据库的连接Oracle，其他数据库方法都是大同小异。<br />根据我的JavaBean自己建个表测试去吧。</strong>
		</p>
<img src ="http://www.blogjava.net/liulu/aggbug/67754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liulu/" target="_blank">刘璐</a> 2006-09-05 10:29 <a href="http://www.blogjava.net/liulu/archive/2006/09/05/67754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ibatis介绍</title><link>http://www.blogjava.net/liulu/archive/2006/09/05/67737.html</link><dc:creator>刘璐</dc:creator><author>刘璐</author><pubDate>Tue, 05 Sep 2006 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/liulu/archive/2006/09/05/67737.html</guid><wfw:comment>http://www.blogjava.net/liulu/comments/67737.html</wfw:comment><comments>http://www.blogjava.net/liulu/archive/2006/09/05/67737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liulu/comments/commentRss/67737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liulu/services/trackbacks/67737.html</trackback:ping><description><![CDATA[
		<strong>相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言，ibatis 是一种“半<br />自动化”的ORM实现。<br />所谓“半自动”，可能理解上有点生涩。纵观目前主流的ORM，无论Hibernate 还是<br />Apache OJB，都对数据库结构提供了较为完整的封装，提供了从POJO 到数据库表的全<br />套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系，即可通过Hibernate<br />或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握，<br />Hibernate/OJB 会根据制定的存储逻辑，自动生成对应的SQL 并调用JDBC 接口加以执<br />行。<br />大多数情况下（特别是对新项目，新系统的开发而言），这样的机制无往不利，大有一<br />统天下的势头。但是，在一些特定的环境下，这种一站式的解决方案却未必灵光。<br />在笔者的系统咨询工作过程中，常常遇到以下情况：<br />1． 系统的部分或全部数据来自现有数据库，处于安全考虑，只对开发团队提供几<br />条Select SQL（或存储过程）以获取所需数据，具体的表结构不予公开。<br />2． 开发规范中要求，所有牵涉到业务逻辑部分的数据库操作，必须在数据库层由<br />存储过程实现（就笔者工作所面向的金融行业而言，工商银行、中国银行、交<br />通银行，都在开发规范中严格指定）<br />3． 系统数据处理量巨大，性能要求极为苛刻，这往往意味着我们必须通过经过高<br />度优化的SQL语句（或存储过程）才能达到系统性能设计指标。<br />面对这样的需求，再次举起Hibernate 大刀，却发现刀锋不再锐利，甚至无法使用，<br />奈何？恍惚之际，只好再摸出JDBC 准备拼死一搏……，说得未免有些凄凉，直接使用JDBC<br />进行数据库操作实际上也是不错的选择，只是拖沓的数据库访问代码，乏味的字段读取操作<br />令人厌烦。<br />“半自动化”的ibatis，却刚好解决了这个问题。<br />这里的“半自动化”，是相对Hibernate等提供了全面的数据库封装机制的“全自动化”<br />ORM 实现而言，“全自动”ORM 实现了POJO 和数据库表之间的映射，以及SQL 的自动<br />生成和执行。而ibatis 的着力点，则在于POJO 与SQL之间的映射关系。也就是说，ibatis<br />并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写，然后通过映<br />射配置文件，将SQL所需的参数，以及返回的结果字段映射到指定POJO。<br />使用ibatis 提供的ORM机制，对业务逻辑实现人员而言，面对的是纯粹的Java对象，<br />这一层与通过Hibernate 实现ORM 而言基本一致，而对于具体的数据操作，Hibernate<br />会自动生成SQL 语句，而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等<br />“全自动”ORM机制而言，ibatis 以SQL开发的工作量和数据库移植性上的让步，为系统<br />设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充，ibatis 的出现显<br />得别具意义。</strong>
<img src ="http://www.blogjava.net/liulu/aggbug/67737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liulu/" target="_blank">刘璐</a> 2006-09-05 10:06 <a href="http://www.blogjava.net/liulu/archive/2006/09/05/67737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>