深入了解ibatis源码----简单ibatis示例代码
2013-08-02 11:33
537 查看
搭建源码环境:
1.创建sql数据库。
2. 写主测试代码
3.将jar包加入到工程,并把源码复制到src目录下
4.src目录下加入配置文件SqlMapConfig.xml
5.加入映射文件SqlMap.xml
6.单步debug代码
List list = sqlMap.queryForList("getAllUsers", "EMPLOYEE");
调用SqlMapClientImpl.java
调用:SqlMapSessionImpl.java
调用SqlMapExecutorDelegate.java
至此返回结果(完成)
1.创建sql数据库。
CREATE TABLE USER_ACCOUNT ( USERID INT(3) NOT NULL AUTO_INCREMENT, USERNAME VARCHAR(10) NOT NULL, PASSSWORD VARCHAR(30) NOT NULL, GROUPNAME VARCHAR(10), PRIMARY KEY (USERID) ); CREATE TABLE USER_ACCOUNT ( USERID INT(3) NOT NULL AUTO_INCREMENT, USERNAME VARCHAR(10) NOT NULL, PASSSWORD VARCHAR(30) NOT NULL, GROUPNAME VARCHAR(10), PRIMARY KEY (USERID) );
2. 写主测试代码
import com.ibatis.sqlmap.client.*; import com.ibatis.common.resources.Resources; import java.io.Reader; import java.util.List; public class Main { public static void main(String arg[]) throws Exception { String resource = "SqlMapConfig.xml"; Reader reader = Resources.getResourceAsReader (resource); SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); List list = sqlMap.queryForList("getAllUsers", "EMPLOYEE"); System.out.println("Selected " + list.size() + " records."); for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
3.将jar包加入到工程,并把源码复制到src目录下
4.src目录下加入配置文件SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <transactionManager type="JDBC" > <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/> <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/test"/> <property name="JDBC.Username" value="root"/> <property name="JDBC.Password" value="wangwei"/> </dataSource> </transactionManager> <sqlMap resource="SqlMap.xml" /> </sqlMapConfig>
5.加入映射文件SqlMap.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap> <select id="getAllUsers" parameterClass="string" resultClass="hashmap"> SELECT * FROM USER_ACCOUNT WHERE GROUPNAME = #groupName# </select> </sqlMap>
6.单步debug代码
List list = sqlMap.queryForList("getAllUsers", "EMPLOYEE");
调用SqlMapClientImpl.java
public List queryForList(String id, Object paramObject) throws SQLException { return getLocalSqlMapSession().queryForList(id, paramObject); } protected SqlMapSessionImpl getLocalSqlMapSession() { SqlMapSessionImpl sqlMapSession = localSqlMapSession.get(); if (sqlMapSession == null || sqlMapSession.isClosed()) { sqlMapSession = new SqlMapSessionImpl(this); localSqlMapSession.set(sqlMapSession); } return sqlMapSession; }
调用:SqlMapSessionImpl.java
public List queryForList(String id, Object paramObject) throws SQLException { return delegate.queryForList(sessionScope, id, paramObject); }
调用SqlMapExecutorDelegate.java
public List queryForList(SessionScope sessionScope, String id, Object paramObject) throws SQLException { return queryForList(sessionScope, id, paramObject, SqlExecutor.NO_SKIPPED_RESULTS, SqlExecutor.NO_MAXIMUM_RESULTS); } public List queryForList(SessionScope sessionScope, String id, Object paramObject, int skip, int max) throws SQLException { List list = null; MappedStatement ms = getMappedStatement(id); Transaction trans = getTransaction(sessionScope); boolean autoStart = trans == null; try { trans = autoStartTransaction(sessionScope, autoStart, trans); StatementScope statementScope = beginStatementScope(sessionScope, ms); try { list = ms.executeQueryForList(statementScope, trans, paramObject, skip, max); } finally { endStatementScope(statementScope); } autoCommitTransaction(sessionScope, autoStart); } finally { autoEndTransaction(sessionScope, autoStart); } return list; }
至此返回结果(完成)
相关文章推荐
- 深入了解ibatis源码----简单ibatis示例代码
- 快速了解Python开发中的cookie及简单代码示例
- 【译文】详解Data Binding - 通过几个简单示例深入了解WinForm数据绑定特性
- 【转】详解Data Binding 通过几个简单示例深入了解WinForm数据绑定特性
- 详解Data Binding - 通过几个简单示例深入了解WinForm数据绑定特性
- C# 发送邮件【简单示例-源码】
- 贴下百度博客自动加好友的简单代码示例!!(c#.net实现)
- Python实现socket信息发送和监听的简单代码示例
- eoLinker-API_Shop_验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等
- 简单扩写UCD-SNMP源码包中的示例MIB module 之一
- 从代码示例了解ECMAScript5新特性
- JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
- arcgis sample代码之SOE示例代码PageLayout REST Server Object Extension 的源码分析
- 简单示例AJAX结合PHP代码实现登录效果代码
- 魏昊卿——《Linux内核分析》第一周作业:从分析简单的汇编代码了解计算机是怎样工作的
- iOS开发——响应链(Responder Chain)的深入理解和代码示例
- Ibatis2.X 入门 代码示例
- Mybatis(三)、mybatis执行示例和mybatis事务以及缓存跟二级缓存简单了解
- struts深入理解之登录示例的源码跟踪
- Java单例模式与工厂模式简单示例代码