Ibatis环境搭建

ibatis简介

Batis是一款使用方便的数据访问工具,也可作为数据持久层的框架。和ORM框架(如Hibernate)将数据库表直接映射为Java对象相比,iBatis是将SQL语句映射为Java对象。相对于全自动SQL的Hibernate,iBatis允许你对SQL有完全控制权,可以视为半自动的数据访问工具。

对象关系映射(ORM):简单原理是通过面向对象方式操作关系型数据库,目前存储数据最常用最流行的工具是关系型数据库,其操作方式是通过 SQL语句操作数据库的表,但是对于Java面向对象编程语言中,所有的操作对象都是对象,因此对象关系映射就是把数据库表和java编程语言中的对象对 应起来,把表的列同java对象中的字段对应起来,程序员在程序开发过程中不再是使用原始SQL语句去直接操作数据库,而是通过ORM提供的查询语句操作 普通的java对象,ORM将其提供的对普通java对象的查询语句翻译成SQL语句来操作数据库,从而屏蔽了不同数据库SQL语句的差别,简化了程序开 发工作,提高了程序的可移植性。

ibatis搭建准备工作

  • ibatis总配置文件: SqlMapConfig.xml
  • 数据库配置文件:db.properties
  • sql映射文件:User.xml
  • ibatis所需jar包

ibatis项目搭建


1、创建实体类 User.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package com.ibatis.entity;
import java.sql.Date;
/**
* "User表"
* @author zxx
* @date 2018-11-20
*
*/
public class User {
/**
* 用户编号
*/
private int ID;
/**
* 用户名
*/
private String name;
/**
* 用户真实姓名
*/
private String realName;
/**
* 邮箱
*/
private String email;
/**
* 地址
*/
private String address;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createUser;
/**
* 修改时间
*/
private Date modifyTime;
/**
* 修改人
*/
private String modifyUser;
/**
* 是否删除,0-未删除 1-已删除
*/
private int isDelete;
public int getID() {
return ID;
}
public void setID(int iD) {
this.ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getCreatUser() {
return createUser;
}
public void setCreatUser(String createUser) {
this.createUser = createUser;
}
public Date getModifyTime() {
return modifyTime;
}
public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
}
public String getModifyUser() {
return modifyUser;
}
public void setModifyUser(String modifyUser) {
this.modifyUser = modifyUser;
}
public int getIsDelete() {
return isDelete;
}
public void setIsDelete(int isDelete) {
this.isDelete = isDelete;
}
public String toString() {
return "User [id=" + ID + ", name=" + name + ", realName="
+ realName + ",email =" + email + ", address=" + address
+",createTime =" + createTime +",createUser =" + createUser
+",modifyTime =" + modifyTime + ",modifyUser =" + modifyUser
+",isDelete =" + isDelete +"]";
}
}

2、ibatis配置文件SqlMapConfig.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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>
<properties resource="db.properties"/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
</dataSource>
</transactionManager>
<sqlMap resource="User.xml"/>
</sqlMapConfig>

3、sql映射文件 User.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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>
<!-- 通过typeAlias使得我们在下面使用Student实体类的时候不需要写包名 -->
<typeAlias alias="User" type="com.ibatis.entity.User" />
<!-- 查询语句 resultClass表示返回数据类型 -->
<select id="selectAllUser" resultClass="User">
select * from user
where isDelete=0
</select>
<!-- 根据用户名查找 resultClass表示返回数据类型 -->
<select id="selectUserByName" resultClass="User" parameterClass="string">
select *
from user
where name like '%$name$%' and isDelete=0
</select>
<!-- 根据ID 修改isdelete值 -->
<update id="deleteUserById" parameterClass="int">
UPDATE user SET
isDelete=1
WHERE
id=#id#
</update>
</sqlMap>

4、数据库配置文件 db.properties

1
2
3
4
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ibatis
username=root
password=1

5、测试类 test.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package entity;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import javax.annotation.Resource;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
SqlMapClient sqlMapClient=null;
try {
//导入sqlMapConfig配置文件
Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
//查询所有用户
List<User> users=sqlMapClient.queryForList("selectAllUser");
for(User user:users) {
System.out.println("user:"+user);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}