深入了解ibatis源码----简单ibatis示例代码
生活随笔
收集整理的這篇文章主要介紹了
深入了解ibatis源码----简单ibatis示例代码
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
搭建源碼環(huán)境:
1.創(chuàng)建sql數(shù)據(jù)庫(kù)。
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. 寫(xiě)主測(cè)試代碼
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包加入到工程,并把源碼復(fù)制到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");
調(diào)用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;
? }
調(diào)用:SqlMapSessionImpl.java
public List queryForList(String id, Object paramObject) throws SQLException {return delegate.queryForList(sessionScope, id, paramObject);}調(diào)用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;
? }
至此返回結(jié)果(完成)
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/3181174.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的深入了解ibatis源码----简单ibatis示例代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: struts深入理解之登录示例的源码跟踪
- 下一篇: 单机redis 主从实例