欧阳良才

不是别人,就是我阳良才
随笔 - 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 欧阳良才 阅读(556) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: