通过iBatis我们可以在数据库表中执行内嵌的insert , delete, update SQL命令。本文中你将看到如何在iBatis中调用存储过程.
我们使用MySQL数据库,并且使用和上一个例子中一样的Contact表.
我们在数据库"vin"中创建了一个叫showData()的存储过程,它将显示Contract表中的所有的contact信息.为了创建存储过程,我们打开MySQL并创建如下定义的过程 :
DELIMITER $$DROPPROCEDUREIF EXISTS `vin`.`showData`$$CREATEPROCEDURE`vin`.`showData`()BEGINselect *fromContact;END$$ DELIMITER ;
"Contact.java"和"SqlMapConfig.xml"与上一个例子中的是一样的 :
publicclassContact {privateString firstName;
privateString lastName;privateString email;
privateintid;publicContact() {}
publicContact( String firstName, String lastName, String email) {this.firstName = firstName;
this.lastName = lastName;this.email = email; }
publicString getEmail() {returnemail; }
publicvoidsetEmail(String email) {this.email = email; }
publicString getFirstName() {returnfirstName; }
publicvoidsetFirstName(String firstName) {this.firstName = firstName; }
publicintgetId() {returnid; }publicvoidsetId(intid) {this.id = id; }
publicString getLastName() {returnlastName; }publicvoidsetLastName(String lastName) {this.lastName = lastName; } }
SqlMapConfig.xml
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
我们只需修改"Contact.xml"并使用标签来在iBatis中调用存储过程
{ call showData() }
上面几行代码调用了存储过程并集合了contract表.下面是Contact.xml的代码 :
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
{ call showData()}
现在我们可以这样在iBatis中调用存储过程 :
sqlMap.queryForList("Contact.storedInfo",null); "sqlMap"是SqlMapClient类的一个对象. IbatisStoredProcedure.java的代码如下 :
importcom.ibatis.common.resources.Resources;
importcom.ibatis.sqlmap.client.SqlMapClient;
importcom.ibatis.sqlmap.client.SqlMapClientBuilder;
importjava.io.*;importjava.sql.SQLException;
importjava.util.*;
publicclassIbatisStoredProcedure{publicstaticvoidmain(String[] args)
throwsIOException,SQLException{ Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); System.out.println("All Contacts");
List contacts = (List)
sqlMap.queryForList("Contact.storedInfo",null);
Contact contact =null;
for(Contact c : contacts) { System.out.print(" "+ c.getId());
System.out.print(" "+ c.getFirstName());
System.out.print(" "+ c.getLastName());
System.out.print(" "+ c.getEmail());
contact = c;
System.out.println(""); } }}
请依照如下步骤执行在iBatis中调用存储过程 :
创建Contact.xml和SqlMapConfig.xml
创建Contact.java并将其编译
创建IbatisStoredProcedure.java并将其编译
执行IbatisStoredProcedure类文件,所有的Contract信息将在你的命令提示符下显示 :
【编辑推荐】
【责任编辑:刘翰 TEL:(010)68476606】
点赞 0