ibatis:ibatis学习笔记整理来源: 发布时间:星期三, 2008年9月10日 浏览:722次 评论:0
1. 目前的框架,不论是ORM的还是其它大都利用xml来解耦合。更加符合OO的思想,ibatis也不例外。其运行流程如下:
DAO(其它主体如jsp或service)-------读取------>ibatis的config.xml(文件内包括 javabean和属性文件的映射)-----解析----à通过文件与bean的映射来解析对应关系 读取一般利用java.io.Reader.片段如下: Reader reader = Resources.getResourceAsReader(“config.xml”); 送给ibatis解析config.xml SqllMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); 如果config.xml和属性映射文件正确的话就ok了,可以利用Dao来访问了。Config.xml 和属性文件如下: <!-- config.xml --> view plaincopy to clipboardprint? <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="net.sourceforge.jtds.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://localhost:1433/ibatis" /> <property name="JDBC.Username" value="sa" /> <property name="JDBC.Password" value="1234" /> </dataSource> </transactionManager> <sqlMap resource="com/luyu/ibatis/User.xml" /> </sqlMapConfig> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="net.sourceforge.jtds.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://localhost:1433/ibatis" /> <property name="JDBC.Username" value="sa" /> <property name="JDBC.Password" value="1234" /> </dataSource> </transactionManager> <sqlMap resource="com/luyu/ibatis/User.xml" /> </sqlMapConfig>view plaincopy to clipboardprint? <!-- 属性文件.xml --> <!-- 属性文件.xml --> view plaincopy to clipboardprint? <PRE class=csharp name="code"><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="com.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap></PRE> <PRE class=csharp name="code"> </PRE> <PRE class=csharp name="code"> Dao中的第一个让问如下: </PRE> <PRE class=csharp name="code"> public static List<User> selectAllAccounts () throws SQLException { </PRE> <PRE class=csharp name="code"> return sqlMapper.queryForList("findAllUser"); </PRE> <PRE class=csharp name="code">} </PRE> view plaincopy to clipboardprint?<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="com.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="com.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap> view plaincopy to clipboardprint? view plaincopy to clipboardprint? Dao中的第一个让问如下: Dao中的第一个让问如下: view plaincopy to clipboardprint? public static List<User> selectAllAccounts () throws SQLException { public static List<User> selectAllAccounts () throws SQLException { view plaincopy to clipboardprint? return sqlMapper.queryForList("findAllUser"); return sqlMapper.queryForList("findAllUser"); view plaincopy to clipboardprint?} } 共有2个jar 1.jdts对sqlserver2000的jar 2. ibatis2.3.2.715.jar 所有代码如下: User.java view plaincopy to clipboardprint? package com.luyu.ibatis.bean; import java.io.Serializable; public class User implements Serializable{ private int id; private int sex; private String name = ""; public User() { } public User(int id, int sex, String name) { super(); this.id = id; this.sex = sex; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + sex; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final User other = (User) obj; if (id != other.id) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (sex != other.sex) return false; return true; } } package com.luyu.ibatis.bean; import java.io.Serializable; public class User implements Serializable{ private int id; private int sex; private String name = ""; public User() { } public User(int id, int sex, String name) { super(); this.id = id; this.sex = sex; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + sex; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final User other = (User) obj; if (id != other.id) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (sex != other.sex) return false; return true; } }view plaincopy to clipboardprint? UserDao.java UserDao.javaview plaincopy to clipboardprint? <PRE class=java name="code">package com.luyu.ibatis.dao; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.luyu.ibatis.bean.User; public class UserDao { private static SqlMapClient sqlMapper; static { try { Reader reader = Resources.getResourceAsReader("com/luyu/ibatis/ibatisConfig.xml"); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException( "Something bad happened while building the SqlMapClient instance." + e, e); } } public static List<User> selectAllAccounts () throws SQLException { return sqlMapper.queryForList("findAllUser"); } }</PRE> <PRE class=java name="code"> </PRE> <PRE class=java name="code">ibatisConfig.xml</PRE> <PRE class=xml name="code"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="net.sourceforge.jtds.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://localhost:1433/ibatis" /> <property name="JDBC.Username" value="sa" /> <property name="JDBC.Password" value="1234" /> </dataSource> </transactionManager> <sqlMap resource="com/luyu/ibatis/User.xml" /> </sqlMapConfig></PRE> view plaincopy to clipboardprint?package com.luyu.ibatis.dao; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.luyu.ibatis.bean.User; public class UserDao { private static SqlMapClient sqlMapper; static { try { Reader reader = Resources.getResourceAsReader("com/luyu/ibatis/ibatisConfig.xml"); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException( "Something bad happened while building the SqlMapClient instance." + e, e); } } public static List<User> selectAllAccounts () throws SQLException { return sqlMapper.queryForList("findAllUser"); } } package com.luyu.ibatis.dao; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.luyu.ibatis.bean.User; public class UserDao { private static SqlMapClient sqlMapper; static { try { Reader reader = Resources.getResourceAsReader("com/luyu/ibatis/ibatisConfig.xml"); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException( "Something bad happened while building the SqlMapClient instance." + e, e); } } public static List<User> selectAllAccounts () throws SQLException { return sqlMapper.queryForList("findAllUser"); } } view plaincopy to clipboardprint? view plaincopy to clipboardprint?ibatisConfig.xml ibatisConfig.xml view plaincopy to clipboardprint?<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="net.sourceforge.jtds.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://localhost:1433/ibatis" /> <property name="JDBC.Username" value="sa" /> <property name="JDBC.Password" value="1234" /> </dataSource> </transactionManager> <sqlMap resource="com/luyu/ibatis/User.xml" /> </sqlMapConfig> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="net.sourceforge.jtds.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://localhost:1433/ibatis" /> <property name="JDBC.Username" value="sa" /> <property name="JDBC.Password" value="1234" /> </dataSource> </transactionManager> <sqlMap resource="com/luyu/ibatis/User.xml" /> </sqlMapConfig> view plaincopy to clipboardprint? User.xml User.xmlview plaincopy to clipboardprint? <PRE class=xml name="code"><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="com.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap></PRE> view plaincopy to clipboardprint?<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="com.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="com.luyu.ibatis.bean.User" /> <select id="getUser" parameterClass="java.lang.String" resultClass="user"> <![CDATA[ select name, sex from t_user where name = #name# ]]> </select> <select id="findAllUser" resultClass="user"> <![CDATA[ select name, sex from t_user ]]> </select> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]> </update> <insert id="insertUser" parameterClass="user"> INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex# ) </insert> <delete id="deleteUser" parameterClass="java.lang.String"> delete from t_user where id = #value# </delete> </sqlMap> view plaincopy to clipboardprint? Test.java<PRE class=java name="code">package com.luyu.ibatis; import java.sql.SQLException; import java.util.List; import com.luyu.ibatis.bean.User; import com.luyu.ibatis.dao.UserDao; public class Test { public static void main(String[] args) { try { List<User> list = UserDao.selectAllAccounts(); System.out.println(list.size()); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i).getName()); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }</PRE> <PRE class=java name="code"> </PRE> <PRE class=java name="code">哈哈。第一天就这么多了。明天继续。是比hibernate简单。 </PRE> 2
相关文章
读者评论发表评论 |