深入了解ibatis源码----简单ibatis示例代码

来源:互联网 发布:网络胜利组动漫风车 编辑:程序博客网 时间:2024/05/22 08:41

搭建源码环境:

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 sqlMapConfigPUBLIC "-//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;
  }


至此返回结果(完成)

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 崩坏3柯尔特没了怎么办 企业破产 欠的钱怎么办 企业破产投的钱怎么办 破产公司的债权怎么办 老师打孩子没伤疼怎么办 公牛插座坏了怎么办 开关盒子坏了怎么办 cdr盗版保存不了怎么办 被钢钉扎了怎么办 判决书赔偿金额错误怎么办 发票认证未通过怎么办 判决书原件丢了怎么办 判决书原件没了怎么办 立案了财产转移怎么办 法院胜诉不执行怎么办 申请执行立案后怎么办 民事判决书下来了怎么办 民事判决书下来以后怎么办 对方没能力赔偿怎么办 判决后无力赔偿怎么办 判决下来没钱还怎么办 如果在法院签字怎么办 法院判决书不签字怎么办 起诉判决不执行怎么办 判决被告还钱怎么办 判决后没钱还怎么办 二审不开庭判决怎么办 二审送传票应怎么办 船舶发电机电压过高怎么办 高层楼水压低怎么办 高楼层二次供水怎么办 汽车水箱坏了怎么办 住宾碰坏马桶水箱盖怎么办? 盆栽草莓肥害怎么办 绿萝叶尖发黄怎么办 民事判决生效后怎么办 劳动合同写错了怎么办 白条过期没还款怎么办 体内重金属砷超标怎么办 孕妇闻了水银怎么办 孕妇吸入汞蒸气怎么办