ibatis存储过程调用(转载)
1
ibatis调用oracle函数示例2

3
4

5
利用空余时间写的一个简单例子,数据库是oracle10g.6

7
8

9
配置文件:10

11
OracleSqlMapConfig.xml12
Xml代码13

14
1. <?xml version="1.0" encoding="UTF-8" ?> 15
2. 16
3. <!DOCTYPE sqlMapConfig 17
4. PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" 18
5. "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> 19
6. 20
7. <sqlMapConfig> 21
8. 22
9. <!-- Configure a built-in transaction manager. If you're using an 23
10. app server, you probably want to use its transaction manager 24
11. and a managed datasource --> 25
12. <transactionManager type="JDBC" commitRequired="false"> 26
13. <dataSource type="SIMPLE"> 27
14. <property name="JDBC.Driver" 28
15. value="oracle.jdbc.driver.OracleDriver" /> 29
16. <property name="JDBC.ConnectionURL" 30
17. value="jdbc:oracle:thin:@localhost:1521:ORCL" /> 31
18. <property name="JDBC.Username" value="scott" /> 32
19. <property name="JDBC.Password" value="tiger" /> 33
20. <property name="Pool.MaximumActiveConnections" value="10" /> 34
21. <property name="Pool.MaximumIdleConnections" value="5" /> 35
22. <property name="Pool.MaximumCheckoutTime" value="120000" /> 36
23. <property name="Pool.TimeToWait" value="500" /> 37
24. <property name="Pool.PingEnabled" value="false" /> 38
25. <property name="Pool.PingConnectionsOlderThan" value="1" /> 39
26. <property name="Pool.PingConnectionsNotUsedFor" value="1" /> 40
27. </dataSource> 41
28. </transactionManager> 42
29. 43
30. <sqlMap resource="com/Emp.xml" /> 44
31. 45
32. 46
33. </sqlMapConfig> 47

48
<?xml version="1.0" encoding="UTF-8" ?>49

50
<!DOCTYPE sqlMapConfig 51
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" 52
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">53

54
<sqlMapConfig>55

56
<!-- Configure a built-in transaction manager. If you're using an 57
app server, you probably want to use its transaction manager 58
and a managed datasource -->59
<transactionManager type="JDBC" commitRequired="false">60
<dataSource type="SIMPLE">61
<property name="JDBC.Driver"62
value="oracle.jdbc.driver.OracleDriver" />63
<property name="JDBC.ConnectionURL"64
value="jdbc:oracle:thin:@localhost:1521:ORCL" />65
<property name="JDBC.Username" value="scott" />66
<property name="JDBC.Password" value="tiger" />67
<property name="Pool.MaximumActiveConnections" value="10" />68
<property name="Pool.MaximumIdleConnections" value="5" />69
<property name="Pool.MaximumCheckoutTime" value="120000" />70
<property name="Pool.TimeToWait" value="500" />71
<property name="Pool.PingEnabled" value="false" />72
<property name="Pool.PingConnectionsOlderThan" value="1" />73
<property name="Pool.PingConnectionsNotUsedFor" value="1" />74
</dataSource>75
</transactionManager>76

77
<sqlMap resource="com/Emp.xml" />78

79

80
</sqlMapConfig>81

82
83

84
Emp.xml85
Xml代码86

87
1. <?xml version="1.0" encoding="UTF-8" ?> 88
2. 89
3. <!DOCTYPE sqlMap 90
4. PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 91
5. "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 92
6. 93
7. <sqlMap namespace="Emp"> 94
8. 95
9. <!-- 取别名 --> 96
10. <typeAlias alias="emp" type="com.Emp" /> 97
11. 98
12. <resultMap id="emp-map" class="emp"> 99
13. <result property="ename" column="ENAME" /> 100
14. </resultMap> 101
15. 102
16. <parameterMap id="test" class="java.util.HashMap"> 103
17. <parameter property="result" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="emp-map" /> 104
18. <parameter property="param1" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" /> 105
19. </parameterMap> 106
20. 107
21. <procedure id="testCur" parameterMap="test"> 108

22.
{? = call selectemp(?)} 109
23. </procedure> 110
24. 111
25. </sqlMap> 112

113
<?xml version="1.0" encoding="UTF-8" ?>114

115
<!DOCTYPE sqlMap 116
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 117
"http://ibatis.apache.org/dtd/sql-map-2.dtd">118

119
<sqlMap namespace="Emp">120

121
<!-- 取别名 -->122
<typeAlias alias="emp" type="com.Emp" />123

124
<resultMap id="emp-map" class="emp">125
<result property="ename" column="ENAME" />126
</resultMap>127

128
<parameterMap id="test" class="java.util.HashMap">129
<parameter property="result" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="emp-map" />130
<parameter property="param1" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />131
</parameterMap>132

133
<procedure id="testCur" parameterMap="test">134

{? = call selectemp(?)} 135
</procedure>136
137
</sqlMap>138

139
数据库脚本:140
Sql代码141

142
1. create or replace function scott.selectemp( 143
2. param1 in varchar2 144
3. )return sys_refcursor 145
4. is 146
5. outcursor sys_refcursor; 147
6. begin 148
7. open outcursor for select ename from scott.emp where emp.ename like param1 ; 149
8. return outcursor; 150
9. end; 151

152
create or replace function scott.selectemp(153
param1 in varchar2 154
)return sys_refcursor155
is156
outcursor sys_refcursor;157
begin 158
open outcursor for select ename from scott.emp where emp.ename like param1 ;159
return outcursor;160
end;161

162
pojo类:163
Java代码164

165
1. package com; 166
2. 167

3. public class Emp
{ 168
4. 169
5. private int empno; 170
6. 171
7. private String ename; 172
8. 173
9. private String job; 174
10. 175
11. private float sal; 176
12. 177
13. private float comm; 178
14. 179

15. public float getComm()
{ 180
16. return comm; 181
17. } 182
18. 183

19. public void setComm(float comm)
{ 184
20. this.comm = comm; 185
21. } 186
22. 187

23. public int getEmpno()
{ 188
24. return empno; 189
25. } 190
26. 191

27. public void setEmpno(int empno)
{ 192
28. this.empno = empno; 193
29. } 194
30. 195

31. public String getEname()
{ 196
32. return ename; 197
33. } 198
34. 199

35. public void setEname(String ename)
{ 200
36. this.ename = ename; 201
37. } 202
38. 203

39. public String getJob()
{ 204
40. return job; 205
41. } 206
42. 207

43. public void setJob(String job)
{ 208
44. this.job = job; 209
45. } 210
46. 211

47. public float getSal()
{ 212
48. return sal; 213
49. } 214
50. 215

51. public void setSal(float sal)
{ 216
52. this.sal = sal; 217
53. } 218
54. 219
55. } 220

221
package com;222

223

public class Emp
{224

225
private int empno;226

227
private String ename;228

229
private String job;230

231
private float sal;232

233
private float comm;234

235

public float getComm()
{236
return comm;237
}238

239

public void setComm(float comm)
{240
this.comm = comm;241
}242

243

public int getEmpno()
{244
return empno;245
}246

247

public void setEmpno(int empno)
{248
this.empno = empno;249
}250

251

public String getEname()
{252
return ename;253
}254

255

public void setEname(String ename)
{256
this.ename = ename;257
}258

259

public String getJob()
{260
return job;261
}262

263

public void setJob(String job)
{264
this.job = job;265
}266

267

public float getSal()
{268
return sal;269
}270

271

public void setSal(float sal)
{272
this.sal = sal;273
}274

275
}276

277
278

279
280

281
测试代码: 282
Java代码283

284
1. Reader reader = Resources.getResourceAsReader("com/OracleSqlMapConfig.xml"); 285
2. SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(reader); 286
3. reader.close(); 287
4. Map<String, Object> p = new HashMap<String, Object>(); 288
5. p.put("param1", "%S%"); 289
6. client.queryForObject("testCur", p); 290
7. List list = (List) p.get("result"); 291

8. for (int i = 0; i < list.size(); i++)
{ 292
9. Emp emp = (Emp) list.get(i); 293
10. System.out.println(emp.getEname()); 294
11. }

浙公网安备 33010602011771号