歐陽良才

          不是別人,就是我陽良才
          隨筆 - 13, 文章 - 8, 評論 - 2, 引用 - 0
          數據加載中……

          關于ibatis

          1.關于ibatis

          ibatis是一種半自動化的ORM框架
          說明:此文章來自 月月鳥0820  http://www.cnblogs.com/java-pan/archive/2012/03/21/ibatis.html

           

          2.項目環境介紹

          System:WIN7 JDK:編譯1.4 開發1.5  數據庫:oracle的dept表

          image

           

          3.文件介紹

          Dept.java  一個javabean

          IDeptSV.java  一個接口,用來聲明增、刪、改、查的方法

          DeptSVImpl.java 對IDeptSV接口的實現,主要包括獲得SqlMapClient對象以及方法體的實現

          ShowDept.java 用來測試的方法.通過ECS插件把查詢的結果寫入到ibatis.html文件中

          Dept.xml 實體和數據庫表對應的映射文件,主要是寫增、刪、改、查的sql語句

          SqlMap.properties 數據庫配置文件,以鍵值對的形式聲明數據庫的driver、url、username、password

          SqlMapConfig.xml  ibatis的核心配置文件,主要是引入數據庫配置文件,配置數據庫連接相關的屬性;引入實體類和數據庫表的映射文件(本次用到的只是最簡單的配置文件)

           

          4.下載jar包

          ibatis-2.3.4.jar ibatis的jar包

          classes12.jar oracle數據庫的驅動包

          ecs-1.4.2.jar ECS插件包,為了鞏固這個插件的使用故用此插件顯示查詢結果

          三個jar包壓縮成了一個文件,下載路徑如下:http://files.cnblogs.com/java-pan/jar.rar

           

          5.關于class&method的介紹

          Reader

          java.io.Reader

           

          SqlMapClientBuilder

          com.ibatis.sqlmap.client.SqlMapClientBuilder

           

          SqlMapClient

          com.ibatis.sqlmap.client.SqlMapClient

           

          關于ECS插件相關類的介紹請見文章

          http://www.cnblogs.com/java-pan/archive/2012/01/08/ecs.html

           

           

          start

          新建web project項目Ibatis,導入jar包(數據庫驅動包,ibatis包,ECS的jar包),各個文件的代碼如下:

          1.Dept.java

          Dept.java
           1 package ibatis;
          2
          3 /**
          4 *Module: Dept.java
          5 *Description: 使用orcle自帶的部門表dept--javabean
          6 *Company:
          7 *Author: ptp
          8 *Date: Mar 19, 2012
          9 */
          10 public class Dept {
          11 // 構造方法
          12 public Dept() {
          13
          14 }
          15
          16 private int deptNo;
          17 private String dName;
          18 private String loc;
          19
          20 public int getDeptNo() {
          21 return deptNo;
          22 }
          23
          24 public void setDeptNo(int deptNo) {
          25 this.deptNo = deptNo;
          26 }
          27
          28 public String getDName() {
          29 return dName;
          30 }
          31
          32 public void setDName(String name) {
          33 dName = name;
          34 }
          35
          36 public String getLoc() {
          37 return loc;
          38 }
          39
          40 public void setLoc(String loc) {
          41 this.loc = loc;
          42 }
          43 }

           

          2.IDeptSV.java

          IDeptSV.java
           1 package ibatis;
          2
          3 import java.util.List;
          4
          5 /**
          6 *Module: IDeptSV.java
          7 *Description: CRUD的接口類
          8 *Company:
          9 *Author: ptp
          10 *Date: Mar 19, 2012
          11 */
          12 public interface IDeptSV {
          13
          14 // 添加
          15 public void addDept(Dept dept);
          16
          17 //添加數據 主鍵自動生成
          18 public void addDeptSequenct(Dept dept);
          19
          20 // 刪除
          21 public void delByDeptNo(int deptNo);
          22
          23 // 查詢 所有記錄
          24 public List queryDept();
          25
          26 // 根據條件查詢
          27 public Dept queryByDeptNo(int deptNo);
          28
          29 //模糊查詢 按照DNAME查詢
          30 public List queryByName(String dName);
          31
          32 // 修改
          33 public void updateDept(Dept dept);
          34
          35 }

           

          3.DeptSVImpl.java

          DeptSVImpl.java
            1 package ibatis;
          2
          3 import java.io.IOException;
          4 import java.io.Reader;
          5 import java.sql.SQLException;
          6 import java.util.List;
          7 import com.ibatis.common.resources.Resources;
          8 import com.ibatis.sqlmap.client.SqlMapClient;
          9 import com.ibatis.sqlmap.client.SqlMapClientBuilder;
          10 /**
          11 * Module: DeptSVImpl.java
          12 * Description: CRUD的實現類
          13 * Company:
          14 * Author: ptp
          15 * Date: Mar 19, 2012
          16 */
          17 public class DeptSVImpl implements IDeptSV {
          18 // 定義ibatis映射文件的位置
          19 private static String resource = "ibatis/SqlMapConfig.xml";
          20 private static SqlMapClient sqlMapClient = null;
          21 static {
          22 try {
          23 Reader reader = Resources.getResourceAsReader(resource);
          24 sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
          25 reader.close();
          26 // 設置為自動提交
          27 // System.out.println(sqlMapClient.getDataSource().getConnection()
          28 // .getAutoCommit());
          29 } catch (IOException e) {
          30 e.printStackTrace();
          31 }
          32 }
          33
          34 /*
          35 * (non-Javadoc) 添加記錄
          36 */
          37 public void addDept(Dept dept) {
          38 try {
          39 sqlMapClient.startTransaction();// 開啟事務
          40 sqlMapClient.insert("insertDept", dept);
          41 sqlMapClient.commitTransaction();// 提交事務
          42 System.out.println("******成功添加1條記錄******");
          43 } catch (SQLException e) {
          44 try {
          45 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          46 } catch (SQLException e1) {
          47 e1.printStackTrace();
          48 }
          49 e.printStackTrace();
          50 } finally {
          51 try {
          52 sqlMapClient.endTransaction();// 結束事務
          53 } catch (SQLException e) {
          54 e.printStackTrace();
          55 }
          56 }
          57 }
          58
          59 /*
          60 * (non-Javadoc) 刪除記錄 一次只刪除一條記錄
          61 */
          62 public void delByDeptNo(int deptNo) {
          63 try {
          64 sqlMapClient.startTransaction();// 開始事務
          65 sqlMapClient.delete("deleteDeptById", new Integer(deptNo));
          66 sqlMapClient.commitTransaction();// 提交事務
          67 System.out.println("******成功刪除1條記錄******");
          68 } catch (SQLException e) {
          69 try {
          70 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          71 } catch (SQLException e1) {
          72 e1.printStackTrace();
          73 }
          74 e.printStackTrace();
          75 } finally {
          76 try {
          77 sqlMapClient.endTransaction();// 結束事務
          78 } catch (SQLException e) {
          79 e.printStackTrace();
          80 }
          81 }
          82 }
          83
          84 /*
          85 * (non-Javadoc) 查詢 查詢所有記錄
          86 */
          87 public List queryDept() {
          88 List rows = null;
          89 try {
          90 sqlMapClient.startTransaction();// 開始事務
          91 rows = sqlMapClient.queryForList("selectAllDept");
          92 sqlMapClient.commitTransaction();// 提交事務
          93 System.out.println("******成功查詢所有記錄******");
          94 } catch (SQLException e) {
          95 try {
          96 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          97 } catch (SQLException e1) {
          98 e1.printStackTrace();
          99 }
          100 e.printStackTrace();
          101 } finally {
          102 try {
          103 sqlMapClient.endTransaction();// 結束事務
          104 } catch (SQLException e) {
          105 e.printStackTrace();
          106 }
          107 }
          108 return rows;
          109 }
          110
          111 /*
          112 * (non-Javadoc) 查詢 查詢一條記錄
          113 */
          114 public Dept queryByDeptNo(int deptNo) {
          115 Dept dept = null;
          116 try {
          117 sqlMapClient.startTransaction();// 開始事務
          118 dept = (Dept) sqlMapClient.queryForObject("selectById",
          119 new Integer(deptNo));
          120 sqlMapClient.commitTransaction();// 提交事務
          121 System.out.println("******成功查詢1條記錄******");
          122 } catch (SQLException e) {
          123 try {
          124 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          125 } catch (SQLException e1) {
          126 e1.printStackTrace();
          127 }
          128 e.printStackTrace();
          129 } finally {
          130 try {
          131 sqlMapClient.endTransaction();// 結束事務
          132 } catch (SQLException e) {
          133 e.printStackTrace();
          134 }
          135 }
          136 return dept;
          137 }
          138
          139 /*
          140 * (non-Javadoc) 更新 一次只更新一條記錄
          141 */
          142 public void updateDept(Dept dept) {
          143 try {
          144 sqlMapClient.startTransaction();// 開始事務
          145 sqlMapClient.update("updateDeptById", dept);
          146 sqlMapClient.commitTransaction();// 提交事務
          147 System.out.println("******成功更新1條記錄******");
          148 } catch (SQLException e) {
          149 try {
          150 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          151 } catch (SQLException e1) {
          152 e1.printStackTrace();
          153 }
          154 e.printStackTrace();
          155 } finally {
          156 try {
          157 sqlMapClient.endTransaction();// 結束事務
          158 } catch (SQLException e) {
          159 e.printStackTrace();
          160 }
          161 }
          162 }
          163
          164 /*
          165 * (non-Javadoc) 模糊查詢
          166 */
          167 public List queryByName(String name) {
          168 List depts = null;
          169 try {
          170 sqlMapClient.startTransaction();// 開始事務
          171 depts = sqlMapClient.queryForList("selectByName", name);
          172 sqlMapClient.commitTransaction();// 提交事務
          173 System.out.println("******模糊查詢成功******");
          174 } catch (SQLException e) {
          175 try {
          176 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          177 } catch (SQLException e1) {
          178 e1.printStackTrace();
          179 }
          180 e.printStackTrace();
          181 } finally {
          182 try {
          183 sqlMapClient.endTransaction();// 結束事務
          184 } catch (SQLException e) {
          185 e.printStackTrace();
          186 }
          187 }
          188 return depts;
          189 }
          190
          191 /*
          192 * (non-Javadoc)主鍵自動生成 添加記錄
          193 */
          194 public void addDeptSequenct(Dept dept) {
          195 try {
          196 sqlMapClient.startTransaction();// 開始事務
          197 sqlMapClient.insert("insertDeptBySequence", dept);
          198 sqlMapClient.commitTransaction();// 提交事務
          199 System.out.println("******成功添加1條記錄(主鍵自動生成)******");
          200 } catch (SQLException e) {
          201 try {
          202 sqlMapClient.getCurrentConnection().rollback();// 回滾事務
          203 } catch (SQLException e1) {
          204 e1.printStackTrace();
          205 }
          206 e.printStackTrace();
          207 } finally {
          208 try {
          209 sqlMapClient.endTransaction();// 結束事務
          210 } catch (SQLException e) {
          211 e.printStackTrace();
          212 }
          213 }
          214 }
          }

          posted on 2012-03-23 13:45 歐陽良才 閱讀(567) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 白城市| 东丰县| 钟山县| 延边| 滨州市| 旅游| 东乡县| 米脂县| 嘉兴市| 松滋市| 大理市| 成都市| 龙陵县| 安乡县| 巩义市| 沾化县| 苏尼特右旗| 米易县| 通州市| 定州市| 美姑县| 贡嘎县| 卫辉市| 兴安盟| 东莞市| 绥芬河市| 廊坊市| 泌阳县| 乌恰县| 闽清县| 华池县| 曲阳县| 运城市| 即墨市| 金堂县| 江孜县| 庄浪县| 综艺| 青河县| 积石山| 台湾省|