资料下载网
首页 计算机 考试教辅
Ibatis教程 pdf电子书免费下载,百度云
首页 > 计算机 > 数据库技术 > Ibatis教程 pdf电子书免费下载,百度云

《Ibatis教程》pdf电子书免费下载


下载方式一:

百度网盘下载地址:https://pan.baidu.com/s/1_hvaoj4Ry26324CSSXmTAA
百度网盘密码:1111

下载方式二:

http://ziliaoshare.cn/Download/ae_123530_do_IbatisJC.zip

 


Ibatis教程

作者:empty

出版社:empty

《Ibatis教程》介绍

iBatis简易教程

iBatis是个像Hibernate, JDO,EJB一类的数据持久框架,它能将对象映射为SQL语句.它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate, JDO不同,因为它使用存储过程和现有的SQL来处理数据库.

我们将向你讲述如何配置iBatis来运行一个小型程序.既然一次性将所有知识全部解释很难,我们索性把本教程分为几个单独的例子来陈述.

第一个例子是关于如何从数据库读取数据并将结果显示.

第二个例子中你将学习如何添加更多的数据到数据库中.

第三个例子将会向你展示如何通过iBatis从记录中删除数据.

1.显示数据库所有数据

现在的第一个例子将会向你展示如何从数据库中读取记录,我们需要一个数据库来执行查询,所以我们使用MySQL5.0作为这个例子的数据库.

这里我们将要检索一些人的contact的信息, contact的表结构给出如下 :

DROP TABLE IF EXISTS `contact`;

CREATE TABLE `contact` (

`contactid` int(11) NOT NULL auto_increment,

`firstame` varchar(20) default NULL,

`lastname` varchar(20) default NULL,

`email` varchar(20) default NULL,

PRIMARY KEY (`contactid`)

);

根据Contact表我们需要创建一个POJO类,

在我们的例子中,数据库test有一个表Contact,包括四个字段 :

•contactid

•firstName

•lastName

•email

POJO类的字段请与数据库建表字段相同,这样可以使用eclipse或myeclipse的自动生成方法。因为字段虽然不要求和数据库相同,但是要求getter 和setters方法里的名字相同。比如getId(),那么数据库里的就是id

Contact.java

public class Contact {

private String firstName;

private String lastName;

private String email;

private int contactid;

public Contact() {}

//放3个属性就行了,暂时不用contactid

public Contact(String firstName, String lastName,String email) {

this.firstName = firstName;

this.lastName = lastName;

this.email = email;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public int getContactid() {

return contactid;

}

public void setContactid(int id) {

this.contactid = id;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

}

为了映射配置我们需要创建SqlMapConfig.xml来指定如下信息 :

针对映射语句的命名空间前缀

我们的数据库将使用JDBC来进行访问

针对MySQL的JDBC驱动为 com.mysql.jdbc.Driver

连接URL为 jdbc:mysql://localhost:3306/test

用户名与密码分别为 root 和 root ,根据你自己情况填写

我们的SQL语句描述在 Contact.xml

SqlMapConfig.xml

?xml version= 1.0 encoding= UTF-8 ?>

!DOCTYPE sqlMapConfig

PUBLIC -//ibatis.apache.org//DTD SQL Map Config 2.0//EN

http://ibatis.apache.org/dtd/sql-map-config-2.dtd >

sqlMapConfig>

settings useStatementNamespaces= true />

transactionManager type= JDBC >

dataSource type= SIMPLE >

property name= JDBC.Driver value= com.mysql.jdbc.Driver />

property name= JDBC.ConnectionURL

value= jdbc:mysql://localhost:3306/test />

property name= JDBC.Username value= root />

property name= JDBC.Password value= root />

/dataSource>

/transactionManager>

sqlMap resource= Contact.xml />

/sqlMapConfig>

映射文件在下面给出,它主要负责为我们的程序执行SQL查询. Contact.xml的代码如下 :

?xml version= 1.0 encoding= UTF-8 ?>

!DOCTYPE sqlMap

PUBLIC -//ibatis.apache.org//DTD SQL Map 2.0//EN

http://ibatis.apache.org/dtd/sql-map-2.dtd >

sqlMap namespace= Contact >

!--- Showing all data of table -->

select id= getAll resultClass= Contact >

select * from contact

/select>

select id= getById resultClass= Contact >

select * from contact where contact id = #contactid#

/select>

/sqlMap>

现在为了显示数据库中的数据我们需要创建一个类----IbatisExample,它从SqlMapConfig.xml中读取配置并在你的控制台输出所有数据. IbatisExample.java的代码如下 :

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.*;

import java.sql.SQLException;

import java.util.*;

public class IbatisExample{

public static void main(String[] args)

throws IOException,SQLException{

Reader reader = Resources.getResourceAsReader( SqlMapConfig.xml );

SqlMapClient sqlMap =

SqlMapClientBuilder.buildSqlMapClient(reader);

//Output all contacts

System.out.println( All Contacts );

List Contact> contacts =

sqlMap.queryForList( Contact.getAll ,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());

System.out.println( );

System.out.println( n按条件查询 Contacts );

int contactid = 1;

List Contact> contacts1 = sqlMap.queryForList( Contact.getById , contactid);

for(Contact c : contacts1){

System.out.print( +c.getcontactid());

System.out.print( +c.getFirstName());

System.out.print( +c.getLastName());

System.out.print( +c.getEmail());

System.out.println();

}

}

}

}

在你的MySQL数据库中创建表Contact

下载iBatis的JAR文件(ibatis-common-2.jar,ibatis-dao-2.jar,ibatis-sqlmap-2.jar),并将其放置在你的lib目录中

把jar添加到路径

创建Contact.java

创建SqlMapConfig.xml

创建IbatisExample.java

执行IbatisExample文件

输出 :

你的Console应该有像这样的输出 :

2.向数据库插入数据

Contact.xml增加红色字体部分

………

………

sqlMap namespace= Contact >

insert id= insert parameterClass= Contact >

insert into contact (firstName,lastName,email)

values (#firstName#, #lastName#, #email#)

/insert>

select id= getAll resultClass= Contact >

select * from contact

/select>

/sqlMap>

Sample.java的代码增加红色字体部分

public class IbatisInsertion{

public static void main(String[] args) throws IOException,SQLException{

Reader reader = Resources.getResourceAsReader( SqlMapConfig.xml );

SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

Contact contact=new Contact( Amit , Kumar , amit@roseindia.net );

sqlMap.insert( Contact.insert ,contact);

……

输出 : 对比第一个例子,增加了红色矩形中的部分

3.iBatis删除操作教程

类似第二个例子,在Contract.xml文件中插入如下部分。

我们使用 delete>标签按条件删除Contact表中的某些记录.

delete id= deleteById >

delete from Contact where contactid = #contactid#

/delete>

在sample.java中增加下面部分,另外,可以选择把第二个例子中增加的insert部分注释掉先,当然不注释也没关系。

int contactid = 1;

sqlMap.delete( Contact.deleteById ,contactid);

输出:

如上图所示,查询全部记录没有了第一条ID,按条件查询内容为空,因为id为1的记录刚才被删掉了。

4.更新表中的数据

在Contact.xml里增加如下代码

update id= updateById parameterClass= Contact >

update Contact set

firstName = #firstName#,

lastName = #lastName#,

email = #email#

where contactid = #contactid#

/update>

呃,在Contact.java里增加一个构造方法,将4个属性都放进去

public Contact(int contactid,

String firstName, String lastName, String email) {

this.contactid = contactid;

this.firstName = firstName;

this.lastName = lastName;

this.email = email;

}

在sample.java里增加如下代码

//更新

Contact contact=new Contact(2, update , update , update@update.com );

sqlMap.update( Contact.updateById , contact);

输出结果如下:

==========================================

5.iBatis ResultMap例子

如果你使用iBatis的Result Map来工作,那么你一定知道iBatis的Result Map是用来提供数据库查询结果和它的对象属性之间的映射的,这是iBatis最常见且重要的特性了.本章仅是一个ResultMap的简单介绍.我们的Contact.java and SqlMapConfig.xml文件和我们的上一个例子是一样的,没有任何变化. Contact POJO的代码如下 :

Contact.java

public class Contact {

private String firstName;

private String lastName;

private String email;

private int id;

public Contact() {}

public Contact(

String firstName,

String lastName,

String email) {

this.firstName = firstName;

this.lastName = lastName;

this.email = email;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

}

SqlMapConfig.xml

?xml version= 1.0 encoding= UTF-8 ?>

!DOCTYPE sqlMapConfig

PUBLIC -//ibatis.apache.org//DTD SQL Map Config 2.0//EN

http://ibatis.apache.org/dtd/sql-map-config-2.dtd >

sqlMapConfig>

settings useStatementNamespaces= true />

transactionManager type= JDBC >

dataSource type= SIMPLE >

property name= JDBC.Driver value= com.mysql.jdbc.Driver />

property name= JDBC.ConnectionURL

value= jdbc:mysql://192.168.10.112:3306/vin />

property name= JDBC.Username value= root />

property name= JDBC.Password value= root />

/dataSource>

/transactionManager>

sqlMap resource= Contact.xml />

/sqlMapConfig>

要想使用ResultMap我们得使用 resultMap> /resultMap>标签.它由一个id组成,该id需要在 select>标签下的resultMap属性中运行resultMap.这是Contact.xml的代码

?xml version= 1.0 encoding= UTF-8 ?>

!DOCTYPE sqlMap

PUBLIC -//ibatis.apache.org//DTD SQL Map 2.0//EN

http://ibatis.apache.org/dtd/sql-map-2.dtd >

sqlMap namespace= Contact >

!--- Showing data by ID -->

resultMap id= result class= Contact >

result property= id column= id />

result property= firstName column= firstName />

result property= lastName column= lastName />

result property= email column= email />

/resultMap>

select id= getById resultMap= result >

select * from contact where id=#id#

/select>

/sqlMap>

为了执行resultMap例子,我们需要将下面的Java代码引入进来.

sqlMap.queryForObject( Contact.getById ,new Integer(1));

这里我们传递值为1的id来显示所有该id的信息.

IbatisResultMap.java

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.*;

import java.sql.SQLException;

import java.util.*;

public class IbatisResultMap{

public static void main(String[] args)

throws IOException,SQLException{

Reader reader = Resources.getResourceAsReader( SqlMapConfig.xml );

SqlMapClient sqlMap =

SqlMapClientBuilder.buildSqlMapClient(reader);

//Output all contacts

System.out.println( *------Information by Contact Id--------* );

Contact contact =

(Contact)sqlMap.queryForObject( Contact.getById ,new Integer(1));

System.out.println( |Id = + contact.getId());

System.out.println( |First Name = + contact.getFirstName());

System.out.println( |Last Name = + contact.getLastName());

System.out.println( |Email Id = + contact.getEmail());

System.out.println( ========================================== );

}

}

为了运行该程序 :

创建Contact.xml和SqlMapConfig.xml

创建并编译Contact.java

创建并编译IbatisResultMap.java

在执行IbatisResultMap类文件的时候,该id的所有信息将会显示出来 :

6.iBatis存储过程例子

正如你在本教程上面部分看到的,通过iBatis我们可以在数据库表中执行内嵌的insert , delete, update SQL命令.本例中你将看到如何在iBatis中调用存储过程.

就像我在上一个例子中提到的,我们使用MySQL数据库,并且使用和上一个例子中一样的Contact表.

我们在数据库 vin 中创建了一个叫showData()的存储过程,它将显示Contract表中的所有的contact信息.为了创建存储过程,我们打开MySQL并创建如下定义的过程 :

DELIMITER $$

DROP PROCEDURE IF EXISTS `vin`.`showData`$$

CREATE PROCEDURE `vin`.`showData`()

BEGIN

select * from Contact;

END$$

DELIMITER ;

Contact.java 和 SqlMapConfig.xml 与上一个例子中的是一样的 :

Contact.java

public class Contact {

private String firstName;

private String lastName;

private String email;

private int id;

public Contact() {}

public Contact(

String firstName,

String lastName,

String email) {

this.firstName = firstName;

this.lastName = lastName;

this.email = email;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

}

SqlMapConfig.xml

?xml version= 1.0 encoding= UTF-8 ?>

!DOCTYPE sqlMapConfig

PUBLIC -//ibatis.apache.org//DTD SQL Map Config 2.0//EN

http://ibatis.apache.org/dtd/sql-map-config-2.dtd >

sqlMapConfig>

settings useStatementNamespaces= true />

transactionManager type= JDBC >

dataSource type= SIMPLE >

property name= JDBC.Driver value= com.mysql.jdbc.Driver />

property name= JDBC.ConnectionURL

value= jdbc:mysql://192.168.10.112:3306/vin />

property name= JDBC.Username value= root />

property name= JDBC.Password value= root />

/dataSource>

/transactionManager>

sqlMap resource= Contact.xml />

/sqlMapConfig>

我们只需修改 Contact.xml 并使用 procedure>标签来调用存储过程

procedure id= storedInfo resultClass= Contact >

{ call showData() }

/procedure>

上面几行代码调用了存储过程并集合了contract表.下面是Contact.xml的代码 :

?xml version= 1.0 encoding= UTF-8 ?>

!DOCTYPE sqlMap

PUBLIC -//ibatis.apache.org//DTD SQL Map 2.0//EN

http://ibatis.apache.org/dtd/sql-map-2.dtd >

sqlMap namespace= Contact >

!--- Calling stored procedure -->

procedure id= storedInfo resultClass= Contact >

{ call showData()}

/procedure>

/sqlMap>

现在我们可以这样调用存储过程 :

sqlMap.queryForList( Contact.storedInfo ,null); sqlMap 是SqlMapClient类的一个对象. IbatisStoredProcedure.java的代码如下 :

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.*;

import java.sql.SQLException;

import java.util.*;

public class IbatisStoredProcedure{

public static void main(String[] args)

throws IOException,SQLException{

Reader reader =

Resources.getResourceAsReader( SqlMapConfig.xml );

SqlMapClient sqlMap =

SqlMapClientBuilder.buildSqlMapClient(reader);

System.out.println( All Contacts );

List Contact> contacts = (List Contact>)

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( );

}

}

}

请依照如下步骤执行本例 :

创建Contact.xml和SqlMapConfig.xml

创建Contact.java并将其编译

创建IbatisStoredProcedure.java并将其编译

执行IbatisStoredProcedure类文件,所有的Contract信息将在你的命令提示符下显示 :


《Ibatis教程》目录

计算机


python
AI人工智能
javascript
计算机网络/服务器
数据库技术
计算机F

考试教辅


考研考博
英语四六级

沪ICP备18046276号-5