iBatis教程中文版.docx
《iBatis教程中文版.docx》由会员分享,可在线阅读,更多相关《iBatis教程中文版.docx(32页珍藏版)》请在冰点文库上搜索。
iBatis教程中文版
1.显示数据库所有数据
iBatis是个像Hibernate,JDO,EJB一类的数据持久框架,它能将对象映射为SQL语句.它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate,JDO不同,因为它使用存储过程和现有的SQL来处理数据库.
本节我们将向你讲述如何配置iBatis来运行一个小型程序.既然一次性将所有知识全部解释很难,我们索性把本教程分为几个单独的例子来陈述.该例是关于如何从数据库读取数据并将结果显示在你的命令提示符上.在第二个例子中你将学习如何添加更多的数据到数据库中,在此之后的第三个例子将会向你展示如何通过iBatis从记录中删除数据.
现在的第一个例子将会向你展示如何从数据库中读取记录,我们需要一个数据库来执行查询,所以我们使用MySQL5.0作为这个例子的数据库.
这里我们将要检索一些人的contact的信息,contact的表结构给出如下:
DROPTABLEIFEXISTS`contact`;
CREATETABLE`contact`(
`id`int(11)NOTNULLauto_increment,
`firstName`varchar(20)defaultNULL,
`lastName`varchar(20)defaultNULL,
`email`varchar(20)defaultNULL,
PRIMARYKEY(`id`)
);
根据Contact表我们需要创建一个POJO类,在我们的例子中,数据库vin有一个表Contact,包括四个字段:
∙id
∙firstName
∙lastName
∙email
Contact.java
publicclassContact{
privateStringfirstName;
privateStringlastName;
privateStringemail;
privateintid;
publicContact(){}
publicContact(
StringfirstName,
StringlastName,
Stringemail){
this.firstName=firstName;
this.lastName=lastName;
this.email=email;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicStringgetFirstName(){
returnfirstName;
}
publicvoidsetFirstName(StringfirstName){
this.firstName=firstName;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetLastName(){
returnlastName;
}
publicvoidsetLastName(StringlastName){
this.lastName=lastName;
}
}
为了映射配置我们需要创建SqlMapConfig.xml来指定如下信息:
•针对映射语句的命名空间前缀
•我们的数据库将使用JDBC来进行访问
•针对MySQL的JDBC驱动为"com.mysql.jdbc.Driver"
•连接URL为"jdbc:
mysql:
//192.168.10.112:
3306/vin"
•用户名与密码分别为"root"和"root"
•我们的SQL语句描述在"Contact.xml"
SqlMapConfig.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEsqlMapConfig
PUBLIC"-//ibatis.apache.org//DTDSQLMapConfig2.0//EN"
"http:
//ibatis.apache.org/dtd/sql-map-config-2.dtd">
value="jdbc:
mysql:
//192.168.10.112:
3306/vin"/>
映射文件在下面给出,它主要负责为我们的程序执行SQL查询.Contact.xml的代码如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEsqlMap
PUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN"
"http:
//ibatis.apache.org/dtd/sql-map-2.dtd">
---Showingalldataoftable-->
select*fromcontact
现在为了显示数据库中的数据我们需要创建一个类----IbatisExample,它从SqlMapConfig.xml中读取配置并在你的控制台输出所有数据.IbatisExample.java的代码如下:
importmon.resources.Resources;
importcom.ibatis.sqlmap.client.SqlMapClient;
importcom.ibatis.sqlmap.client.SqlMapClientBuilder;
importjava.io.*;
importjava.sql.SQLException;
importjava.util.*;
publicclassIbatisExample{
publicstaticvoidmain(String[]args)
throwsIOException,SQLException{
Readerreader=Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClientsqlMap=
SqlMapClientBuilder.buildSqlMapClient(reader);
//Outputallcontacts
System.out.println("AllContacts");
Listcontacts=(List)
sqlMap.queryForList("Contact.getAll",null);
Contactcontact=null;
for(Contactc:
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("");
}
}
}
为了运行该例,你需要遵循如下步骤:
•在你的MySQL数据库中创建表Contact
•下载iBatis的JAR文件(ibatis-common-2.jar,ibatis-dao-2.jar,ibatis-sqlmap-2.jar),并将其放置在你的lib目录中
•设置类路径
•创建Contact.java将其编译
•创建Contact.java
•创建SqlMapConfig.xml
•创建IbatisExample.java并将其编译
•执行IbatisExample文件
输出:
你的命令提示符应该有像这样的输出:
2.向数据库插入数据
iBatis最棒的特点就是它的简洁,这也是唯一令它在任何数据库程序中更容易使用的原因.iBatis使得通过Java或者任何其它的Microsoft的程序来使用数据库变得非常简单.本章我们将会通过一个例子向你介绍如何向数据库插入一行数据.我们使用MySQL作为本例的数据库,和我们上一章中使用的是一样的.这是"Contact"表和我们上一章使用过的两个文件:
"Contact.java"和"SqlMapConfig.xml"
Contact.java
publicclassContact{
privateStringfirstName;
privateStringlastName;
privateStringemail;
privateintid;
publicContact(){}
publicContact(
StringfirstName,
StringlastName,
Stringemail){
this.firstName=firstName;
this.lastName=lastName;
this.email=email;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicStringgetFirstName(){
returnfirstName;
}
publicvoidsetFirstName(StringfirstName){
this.firstName=firstName;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetLastName(){
returnlastName;
}
publicvoidsetLastName(StringlastName){
this.lastName=lastName;
}
}
SqlMapConfig.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEsqlMapConfig
PUBLIC"-//ibatis.apache.org//DTDSQLMapConfig2.0//EN"
"http:
//ibatis.apache.org/dtd/sql-map-config-2.dtd">
value="jdbc:
mysql:
//192.168.10.112:
3306/vin"/>
我们使用标签来映射SQL语句,在该标签中我们定义了一个"id",它将在IbatisInsertion.java文件中用来执行数据库插入,查询操作.
selectlast_insert_id()asid
上面的代码意味着表中被插入数据的下一行.
Contact.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEsqlMap
PUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN"
"http:
//ibatis.apache.org/dtd/sql-map-2.dtd">
---Insertingdataintable-->
insertintocontact(firstName,lastName,email)
values(#firstName#,#lastName#,#email#)
selectlast_insert_id()asid
---Showingalldataoftable-->
select*fromcontact
IbatisInsertion.java的代码如下:
importmon.resources.Resources;
importcom.ibatis.sqlmap.client.SqlMapClient;
importcom.ibatis.sqlmap.client.SqlMapClientBuilder;
importjava.io.*;
importjava.sql.SQLException;
importjava.util.*;
publicclassIbatisInsertion{
publicstaticvoidmain(String[]args)throwsIOException,SQLException{
Readerreader=Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClientsqlMap=SqlMapClientBuilder.buildSqlMapClient(reader);
//Insertingonerecordincontacts
System.out.println(
"*--------------InsertinginformationinContactTable-----------*");
Contactcontact=newContact("Amit","Kumar","amit@");
sqlMap.insert("Contact.insert",contact);
System.out.println("|RecordInsertedSuccessfully");
System.out.println("AllContacts");
Listcontacts=(List)
sqlMap.queryForList("Contact.getAll",null);
Contactcontactall=newContact();
for(Contactc:
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("");
}
System.out.println("===============================================");
}
}
如何执行本例:
1.创建Contact.java并将其编译
2.创建Contact.xml和SqlMapConfig.xml
3.创建IbatisInsertion.java
4.执行IbatisInsertion类文件,结果将在你的命令提示符上输出如下:
"RecordInsertedSuccessfully"
输出:
3.iBatis删除操作教程
我希望通过上面的例子,你能完全懂得如何向数据库执行插入或者查询操作.所以在本例中你将学习到如何通过iBatis在数据库中删除数据.所以你需要分析代码并清楚的理解在这些代码里到底发生了什么.然而你绝对不需要再创建一个不同的数据库,虽然你知道我们使用上一个MySQL作为数据库而且你已经知道了我们的表名是Contact.但你可以选择是使用这个数据库还是再创建一个,这都由你决定!
你唯一需要确定的就是你定义的表名是正确的,否则将会产生Bug.如果你从本iBatis教程的开始学下来的,那么你是不需要修改代码的.仅仅将给定的代码拷贝到文件夹并执行,最终删除数据库表中的数据.
正如我之前提到的,在iBatis的本章,我们将要从Ctract表中删除记录,我们使用MySQL的数据库"vin"
我们的Contact.java和SqlMapConfig.xm与上一个例子中的是一样的.
Contact.java
publicclassContact{
privateStringfirstName;
privateStringlastName;
privateStringemail;
privateintid;
publicContact(){}
publicContact(
StringfirstName,
StringlastName,
Stringemail){
this.firstName=firstName;
this.lastName=lastName;
this.email=email;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicStringgetFirstName(){
returnfirstName;
}
publicvoidsetFirstName(StringfirstName){
this.firstName=firstName;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetLastName(){
returnlastName;
}
publicvoidsetLastName(StringlastName){
this.lastName=lastName;
}
}
SqlMapConfig.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEsqlMapConfig
PUBLIC"-//ibatis.apache.org//DTDSQLMapConfig2.0//EN"
"http:
//ibatis.apache.org/dtd/sql-map-config-2.dtd">
value="jdbc:
mysql:
//192.168.10.112:
3306/vin"/>
在Contract.xml文件中我们使用标签删除Contract表中的全部记录.