Ibatis2.0使用說明(一)——入門實例篇

 

文章轉載自互聯網,如果您覺得我們侵權了,請聯繫管理員,我們會立刻處理。
本文章將從一個Ibatis的具體示例,幫助你快速瞭解IBatis框架。
一個簡單的IBatis應用包含以下基本步驟:
一、 配置文件
1. 配置SqlMapConfig.properties文件
2. 配置SqlMapConfig.xml文件
3. 配置SqlMap.xml文件(可能有多個文件,一般情況下,可以一個表對應一個SqlMap.xml文件,文件名稱可以與表名相同)
注意:上面所述的SqlMapConfig.xml文件必須在類路徑中,SqlMapConfig.properties和SqlMap.xml文件可以在類路徑中,也可以不在類路徑中。當SqlMapConfig.properties和SqlMap.xml文件不在類路徑中的時候,配置也不同,在本文中,這三個文件都放在類路徑中。
二、 程序調用
1. 初始化SqlMapClient對象。
2. 運行Sql語句:你可以調用SqlMapClient對象的queryfor...()、insert()、update()、delete()來分別執行select、insert、update和delete操作。
好了,下面我們結合實例進行講解:

三、實例:
下面的例子是以mysql爲例進行說明,建立了一個author表,爲了方便調試代碼,你可以將ibatis-common-2.jar、ibatis-dao-2.jar、ibatis-sqlmap-2.jar和lib目錄下的所有的jar都加載到你的程序中,在後續的文章中,將會說明每個Jar的用途。
(一) 創建數據庫和表
創建一個名字爲IBatisExample的數據庫
CREATE TABLE author (
  auth_id int(8) NOT NULL auto_increment,
  auth_name varchar(100) NOT NULL default '',
  auth_age int(3) NOT NULL default '0',
  auth_tel varchar(100) NOT NULL default '',
  auth_address varchar(100) NOT NULL default '',
  PRIMARY KEY  (auth_id)
) TYPE=MyISAM;
INSERT INTO author VALUES (1, '作者一', 30, '025-12345678', '南京');
INSERT INTO author VALUES (2, '作者二', 30, '025-12345678', '南京');
(二) 配置文件
1. 配置SqlMapConfig.properties文件
文件內容:
driver=org.gjt.mm.mysql.Driver
url=jdbc:mysql://192.168.0.26:3306/IBatisExample?useUnicode=true&characterEncoding=GB2312
username=root
password=123456
2. 配置SqlMapConfig.xml文件
文件內容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"[url]http://www.ibatis.com/dtd/sql-map-config-2.dtd[/url]">
<!-- Always ensure to use the correct XML header as above! -->
<sqlMapConfig>
<!-- The properties (name=value) in the file specified here can be used placeholders in this config
file (e.g. “${driver}”. The file is relative to the classpath and is completely optional. -->
<properties resource="SqlMapConfig.properties" />
<!-- These settings control SqlMapClient configuration details, primarily to do with transaction
management. They are all optional (more detail later in this document). -->
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<!-- Configure a datasource to use with this SQL Map using SimpleDataSource.
Notice the use of the properties from the above resource -->
<transactionManager type="JDBC" >
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
<property name="JDBC.DefaultAutoCommit" value="true" />
<property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select 1 from author"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
<!-- Identify all SQL Map XML files to be loaded by this SQL map. Notice the paths
are relative to the classpath. For now, we only have one… -->
<sqlMap resource="com/ibatis/sqlmap/author.xml" />
</sqlMapConfig>
3. 配置SqlMap.xml文件
這裏我們命名爲author.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"[url]http://www.ibatis.com/dtd/sql-map-2.dtd[/url]">
<sqlMap namespace="Author">
<typeAlias alias="Author" type="com.ibatis.beans.Author" />
<select id="getAuthor" parameterClass="int" resultClass="Author">
 SELECT auth_id as id,auth_name as name,auth_age as age,auth_tel as telephone,auth_address as address FROM author WHERE auth_id = #id#
</select>
<statement id="getAllAuthor" resultMap="authorResult">
 SELECT * FROM author
</statement>
<insert id="insertAuthor" parameterMap="authorParameter">
 INSERT INTO author (auth_name,auth_age,auth_tel,auth_address) VALUES (?,?,?,?)
</insert>
<update id="updateAuthor" parameterClass="Author">
 UPDATE author set auth_name=#name# WHERE auth_id = #id#
</update>
<delete id="deleteAuthor" parameterClass="int">
 delete from author WHERE auth_id = #id#
</delete>
</sqlMap>
(三) 程序調用
由於源代碼很長,所以這裏我只給出一些簡單的程序調用方法,所以如果有人想要源代碼的話,可以留下你的郵箱。
1. 初始化一個SqlMapClient對象,代碼如下:
public class SqlMapConf
{
    private static SqlMapClient sqlMapClient;
    static
 {
  try
  {
      System.out.println("sqlMapClient initing.....");
   String resource = "SqlMapConfig.xml";
   Reader reader = Resources.getResourceAsReader (resource);
   sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
  }
  catch (Exception e)
  {
   e.printStackTrace();
   throw new RuntimeException ("Error initializing MyAppSqlConfig class. Cause: " +e);
  }
 }
    public static SqlMapClient getInstance()
    {
        return sqlMapClient;
    } 
}
2. 然後要爲Author表寫一個bean,代碼如下:
public class Author
{
    private int id;
    private int age;
    private String name;  
    private String address;
    private String telephone;
   
    public int getId()
    {
        return id;
    }
    public void setId(int id)
    {
        this.id=id;
    }
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age=age;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name=name;
    }
   
    public String getAddress()
    {
        return address;
    }
    public void setAddress(String address)
    {
        this.address=address;
    }
    public String getTelephone()
    {
        return telephone;
    }
    public void setTelephone(String telephone)
    {
        this.telephone=telephone;
    }
}
3. 程序調用:
這裏將只示範一下getAuthor、insertAuthor1、updateAuthor和deleteAuthor的方法。
首先應該得到一個SqlMapClient實例:
SqlMapClient sqlMapClient = SqlMapConf.getInstance();
(1) getAuthor:
 Author author = (Author)sqlMapClient.queryForObject("getAuthor", new Integer(1));
(2) getAllAuthor
 List authorList = (List)sqlMapClient.queryForList("getAllAuthor", null);
(3) insertAuthor:
 Author author = new Author();
 author.setName("作者三");
 author.setAge(31);
 author.setAddress("南京");
 author.setTelephone("025-987654321");
 sqlMapClient.insert(operaName, author);
(4) updateAuthor
 Author author = new Author();
 author.setName("Updated");
 author.setId(authorID);
 sqlMapClient.update(operaName, author);       
(5) deleteAuthor
 sqlMapClient.delete("deleteAuthor", new Integer(authorID));
這裏只是做一個簡單的例子,希望能夠幫助快速的入門,而並沒有對IBatis的原理進行剖析,不過通過這幾個調用,我想你可能能夠猜到IBatis的一部分運作原理了,關於IBatis的原理以及高級應用,請關注後續文章。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章