iBATIS入門程序六大步詳解
作者:離開(kāi)的那年
iBATIS入門程序六大步主要是在六個(gè)程序基礎(chǔ)上的,那么本文就將向你介紹iBATIS入門程序的具體操作。
iBATIS入門程序***步:author.java
- package com.ibatis;
- public class Author {
- private int id;
- private String name;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
iBATIS入門程序第二步:author.xml
- ﹤?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="Author"﹥
- ﹤!--模塊配置--﹥
- ﹤!--設(shè)置本映射文件中的別名--﹥
- ﹤typeAlias alias="author" type="com.ibatis.Author" /﹥
- ﹤!--
- ﹤cacheModel type="LRU" ﹥
- 設(shè)置緩存有效期,如果超出這個(gè)時(shí)間,則會(huì)清空緩存
- ﹤flushInterval hours="24"﹥﹤/flushInterval﹥
- 指定執(zhí)行特定的statement時(shí),清空緩存
- ﹤flushOnExecute statement="updateAuthor"/﹥
- SIZE:本cacheModel***容納數(shù)據(jù)對(duì)象的數(shù)量
- ﹤property value="1000"/﹥
- ﹤/cacheModel﹥
- 需要使用模塊配置,如:﹤select resultClass="author" cacheModel="authorCache"﹥
- 把記錄使用cacheModel"authorCache"進(jìn)行緩存,以后程序再使用statement進(jìn)行數(shù)據(jù)查詢,就直接
- 去緩存中取數(shù)據(jù),而不是去數(shù)據(jù)庫(kù)中取數(shù)據(jù)
- --﹥
- ﹤!--Statement配置--﹥
- ﹤select resultClass="author"﹥
- ﹤![CDATA[SELECT * FROM author]]﹥
- ﹤/select﹥
- ﹤update parameterClass="author"﹥
- ﹤![CDATA[UPDATE author SET WHERE ﹥
- ﹤/update﹥
- ﹤delete parameterClass="author"﹥
- delete from author WHERE
- ﹤/delete﹥
- ﹤insert parameterClass="author"﹥
- ﹤![CDATA[INSERT INTO author(id,name) VALUES(#id#,#name#)]]﹥
- ﹤/insert﹥
- ﹤/sqlMap﹥
iBATIS入門程序第三步:SqlMapConfig.properties
- driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
- url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=ibatis
- username=sa
- password=sa
iBATIS入門程序第四步:SqlMapConfig.xml
- ﹤?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"﹥
- ﹤!-- Ibatis配置文件--﹥
- ﹤sqlMapConfig﹥
- ﹤!-- 加載連接數(shù)據(jù)庫(kù)屬性文件 --﹥
- ﹤properties resource="com/ibatis/SqlMapConfig.properties"/﹥
- ﹤!--
- cacheModelsEnabled:是否啟動(dòng)SqlMapClient的緩存機(jī)制。
- enhancementEnabled:是否針對(duì)POJO啟用字節(jié)碼增加機(jī)制以提升geter/seter的調(diào)用效用,為延遲加載帶來(lái)了及大的性能提升。
- lazyLoadingEnabled:是否啟用延遲加載機(jī)制。
- maxRequests:***并大請(qǐng)求數(shù)。
- maxSessions:***Session數(shù),即當(dāng)前***允許的開(kāi)發(fā)SqlMapClient數(shù)
- maxTransactions:***并發(fā)事務(wù)數(shù)。
- --﹥
- ﹤settings
- cacheModelsEnabled="true"
- enhancementEnabled="true"
- lazyLoadingEnabled="true"
- maxRequests="32"
- maxSessions="10"
- maxTransactions="5"
- useStatementNamespaces="false"
- /﹥
- ﹤!-- datasource --﹥
- ﹤transactionManager type="JDBC" ﹥
- ﹤dataSource type="SIMPLE"﹥
- ﹤!--JDBC驅(qū)動(dòng)--﹥
- ﹤property name=JDBC.Driver value="${driver}"/﹥
- ﹤!--數(shù)據(jù)庫(kù)URL--﹥
- ﹤property value="${url}"/﹥
- ﹤!--數(shù)據(jù)庫(kù)用戶名--﹥
- ﹤property value="${username}"/﹥
- ﹤!--數(shù)據(jù)庫(kù)密碼--﹥
- ﹤property value="${password}"/﹥
- ﹤!--不知道,在網(wǎng)站上查不出來(lái),有時(shí)間再研究--﹥
- ﹤property value="true" /﹥
- ﹤!--數(shù)據(jù)庫(kù)連接池可維持的***容量--﹥
- ﹤property value="10"/﹥
- ﹤!--數(shù)據(jù)庫(kù)連接池中允許的可掛起連接數(shù)--﹥
- ﹤property value="5"/﹥
- ﹤!--數(shù)據(jù)庫(kù)連接池中,連接被某個(gè)任務(wù)所占用的***時(shí)間--﹥
- ﹤property value="120000"/﹥
- ﹤!--當(dāng)線程想從連接池中獲取連接時(shí),連接池中無(wú)可用連接,該參數(shù)設(shè)置線程所允許等待的最長(zhǎng)時(shí)間--﹥
- ﹤property value="500"/﹥
- ﹤!--數(shù)據(jù)庫(kù)連接狀態(tài)檢查語(yǔ)句--﹥
- ﹤property value="select 1 from author"/﹥
- ﹤!--是否允許檢查連接狀態(tài)--﹥
- ﹤property value="false"/﹥
- ﹤!--對(duì)持續(xù)連接超過(guò)設(shè)定值的連接進(jìn)行檢查--﹥
- ﹤property value="1"/﹥
- ﹤!--對(duì)空閑超過(guò)設(shè)定值的連接進(jìn)行檢查--﹥
- ﹤property value="1"/﹥
- ﹤/dataSource﹥
- ﹤/transactionManager﹥
- ﹤!--加載SqlMap文件--﹥
- ﹤sqlMap resource="com/ibatis/author.xml" /﹥
- ﹤/sqlMapConfig﹥
iBATIS入門程序第五步:
- package com.ibatis;
- import java.io.IOException;
- import java.io.Reader;
- import com.ibatis.common.resources.Resources;
- import com.ibatis.sqlmap.client.SqlMapClient;
- import com.ibatis.sqlmap.client.SqlMapClientBuilder;
- public class SqlMapConf {
- //初始化SqlMapClient
- private static SqlMapClient sqlmapclient;
- static{
- //定義ibatis配置文件的路徑
- String resource="com/ibatis/SqlMapConfig.xml";
- try {
- //讀取ibatis配置文件
- Reader reader=Resources.getResourceAsReader(resource);
- //通過(guò)SqlMapClientBuilder創(chuàng)建SqlMapClient
- sqlmapclient=SqlMapClientBuilder.buildSqlMapClient(reader);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- System.out.println("找不到SqlMapConfig.xml文件~~");
- }
- }
- public static SqlMapClient getInstance(){
- //返回sqlmapclient,SqlMapClient是ibatis的核心主建,提供數(shù)據(jù)操作的基礎(chǔ)平臺(tái)
- return sqlmapclient;
- }
- /**
- * SqlMapClient的另一種創(chuàng)建方式
- * XmlSqlMapClientBuilder xmlbuilder=new XmlSqlMapClientBuilder();
- * SqlMapClient sqlmapclient=xmlbuilder.builderSqlMap(reader);
- * XmlSqlMapClientBuilder是ibatis2.0之后版本新引入的組件,用以取代1.X版本中的
- * XmlSqlMapBuilder,其作用就是創(chuàng)建SqlMapClient。
- */
- }
iBATIS入門程序第六步:
- package com.ibatis;
- import java.sql.SQLException;
- import java.util.List;
- import java.util.*;
- import com.ibatis.sqlmap.client.SqlMapClient;
- /**
- * ibatis的事務(wù)管理器,目前只支持三種:JDBC,JTA,EXTERNAL
- * JDBC:通過(guò)傳統(tǒng)的JDBC CONNECTION.COMIT/rollback實(shí)現(xiàn)事務(wù)支持
- * JTA:使用容器提供的JTA服務(wù)實(shí)現(xiàn)全局事務(wù)管理
- * EXTERNAL:外部事務(wù)管理,如EJB中使用IBATIS,通過(guò)EJB的部署配置即可實(shí)現(xiàn)自動(dòng)的事務(wù)管理機(jī)制
- * 。此時(shí)IBATIS將把所有的事務(wù)委托給外部容器進(jìn)行管理
- */
- public class IbatisClient {
- private static SqlMapClient sqlmapclient=SqlMapConf.getInstance();
- //根據(jù)主健ID修改NAME
- public static void updateAuthor(int id,String name){
- Author author=new Author();
- author.setId(id);
- author.setName(name);
- try {
- //事務(wù)開(kāi)始,用的是JDBC的事務(wù)管理
- sqlmapclient.startTransaction();
- sqlmapclient.update("updateAuthor",author);
- sqlmapclient.commitTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("修改錯(cuò)誤~~");
- }
- finally{
- try {
- sqlmapclient.endTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- //查詢所有的記錄,返回一個(gè)集合
- public static List findAll(){
- List list=null;
- try {
- sqlmapclient.startTransaction();
- //0:設(shè)置從第幾條記錄開(kāi)始
- //1:設(shè)置顯示記錄記錄
- //list=sqlmapclient.queryForList("getAllAuthor",null,0,1);
- list=sqlmapclient.queryForList("getAllAuthor",null);
- sqlmapclient.commitTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("查詢錯(cuò)誤~~");
- }
- finally{
- try {
- sqlmapclient.endTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return list;
- }
- //添加操作
- public static boolean insert(int id,String name){
- boolean bool=false;
- Author author=new Author();
- author.setId(id);
- author.setName(name);
- try {
- sqlmapclient.startTransaction();
- sqlmapclient.insert("insertAuthor",author);
- bool=true;
- sqlmapclient.commitTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- bool=false;
- e.printStackTrace();
- System.out.println("添加錯(cuò)誤~~");
- }
- finally{
- try {
- sqlmapclient.endTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return bool;
- }
- //刪除操作
- public static boolean delete(int id){
- boolean bool=false;
- Author author=new Author();
- author.setId(id);
- try {
- sqlmapclient.commitTransaction();
- sqlmapclient.delete("deleteAuthor",author);
- bool=true;
- sqlmapclient.startTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- bool=false;
- e.printStackTrace();
- System.out.println("刪除錯(cuò)誤~~");
- }
- finally{
- try {
- sqlmapclient.endTransaction();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return bool;
- }
- public static void main(String str[]){
- //刪除
- //boolean bool=IbatisClient.delete(3);
- //添加
- //boolean bool=IbatisClient.insert(3,"wanwu");
- //修改
- //IbatisClient.updateAuthor(3,"jj");
- //查詢所有的記錄
- List list=IbatisClient.findAll();
- Iterator iterator=list.iterator();
- while(iterator.hasNext()){
- Author author=(Author)iterator.next();
- System.out.println("﹥
- System.out.println("﹥
- }
- }
- }
iBATIS入門程序就向你介紹到這里,希望對(duì)于你了解iBATIS有所幫助。
【編輯推薦】
責(zé)任編輯:仲衡
來(lái)源:
百度空間