^_^嗨一下
文章目录
  1. 1. 工具准备
  2. 2. 准备数据
  3. 3. 配置
  4. 4. 推荐资料

什么是MyBatis?MyBatis是一个运用于持久层的数据操作框架。MyBatis是从iBatis升级而来。使用MyBatis提供的ORM机制,业务逻辑层实现人员操作的是JAVA对象,该层面与Hibernate机制中的相同。对于具体的数据库操作而言,Hibernate会自动生成SQL并执行,而MyBatis要求开发人员具体编写SQL语句。MyBatis在数据库移植性和SQL开发工作量上进行了让步,从而提升了系统设计的灵活性,扩展了其自由空间。

为什么需要MyBatis?系统的部分或全部数据来自现有数据库,出于安全性的考虑,只为开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现(对于金融行业而言,工商银行、中国银行和交通银行,都在开发规范中严格指定)。系统数据处理量巨大,性能要求极为苛刻,这通常意味着我们必须由经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。

工具准备

1:MyEclipse 10 + Jdk6.0 及以上

2:mybatis-3.1.1.jar + mysql-connector-5.0.3.jar

3: Junit

准备数据

创建User表

列名类型说明约束
userIdint用户ID主键标识列
userNamevarchar用户姓名不能为空
userPasswordvarchar用户密码不能为空
userBirthdatetime用户生日
userAddressvarchar用户ID
userPhonevarchar用户电话
userStatusint用户类型0为禁用;1为普通用户(默认);2为管理员

配置

整体结构

1、使用Eclipse创建web项目MyBatisDemo1

2、添加所需的jar

下载前面提供的jar并导入到项目当中

3、创建mybatis-config.xml(src)文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置Mybatis的环境,事务及数据源等等 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 数据库地址 -->
<property name="url" value="jdbc:mysql://127.0.0.1:3307/syprodb" />
<!-- 数据库用户名 -->
<property name="username" value="root" />
<!-- 数据库密码 -->
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>

4、创建实体类User.java(com.xhay1122.entity.user)

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
package com.xhay1122.entity.user;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private int userId;
private String userName;
private String userPassword;
private Date userBirth;
private String userAddress;
private String userPhone;
private int userStatus;
//无参数的构造函数
//getter和setter
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName
+ ", userPassword=" + userPassword + ", userBirth=" + userBirth
+ ", userAddress=" + userAddress + ", userPhone=" + userPhone
+ ", userStatus=" + userStatus + "]";
}
}

5、创建映射器的配置文件UserMapper.xml(com.xhay1122.mapper.user)

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
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xhay1122.dao.user.UserDao">
<!-- 添加用户 -->
<insert id="insertUser" parameterType="com.xhay1122.entity.user.User">
<![CDATA[
insert into User ( userId, userName, userPassword, userBirth, userAddress, userStatus, userPhone)
values(#{userId}, #{userName}, #{userPassword}, #{userBirth}, #{userAddress}, #{userStatus}, #{userPhone})
]]>
</insert>
<!-- 根据用户名和密码查询用户 -->
<select id="selectUserByNameAndPassword" parameterType="com.xhay1122.entity.user.User"
resultType="com.xhay1122.entity.user.User">
<![CDATA[
select * from User
]]>
<where>
<if test="userName != null">
userName = #{userName}
</if>
<if test="userPassword != null">
AND userPassword = #{userPassword}
</if>
</where>
</select>
<select id="selectAllUsers" resultType="com.xhay1122.entity.user.User">
<![CDATA[
select * from User
]]>
</select>
</mapper>

补充:
namespace表示该配置文件对于映射器(UserDao)接口的完全路径。

insert 映射插入语句

Id表示在命名空间中唯一的标识符,可以被用于引用该语句,与映射器接口中的方法一致时,会在该方法中使用该语句。

parameterType表示将会传入该语句的参数类的完全限定名或别名。

useGeneratedKeys表示使用JDBC的getGeneratedKeys方法取出由数据库内部生成的主键(实现标识列自动增长)。

select 映射查询语句

Id表示在命名空间中唯一的标识符,可以被用于引用该语句,与映射器接口中的方法一致时会在该方法中使用该语句。

parameterType表示将会传入该语句的参数类的完全限定名或别名。

resultType表示从这条语句中返回的期望类型的类的完全限定名或别名,如果返回的是集合,则应是集合中包含元素的类型,而并非集合本身。

6、创建映射器UserDao.java(com.xhay1122.dao.user)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.xhay1122.dao.user;
import java.util.List;
import com.xhay1122.entity.user.User;
public interface UserDao {
//新增用户
public int insertUser(User user);
//根据用户名和密码查询用户
public User selectUserByNameAndPassword(User user);
//查询所有的用户
public List<User> selectAllUsers();
}

7、在mybatis-config.xml中添加映射文件指向UserMapper.xml

1
2
3
<mappers>
<mapper resource="com/xhay1122/mapper/user/UserMapper.xml" />
</mappers>

8、测试TestUser.java(com.xhay1122.test)

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
package com.xhay1122.test;
import java.io.Reader;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.xhay1122.dao.user.UserDao;
import com.xhay1122.entity.user.User;
public class TestUser {
private SqlSession session=null;
@Before
public void setUp() throws Exception {
String resource = "mybatis-configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
session = sqlMapper.openSession();
}
@Test
public void testInsertUser(){
System.out.println("==========testInsertUser==========");
UserDao o = session.getMapper(UserDao.class);
User user = new User();
user.setUserId(1);
user.setUserName("xhay");
user.setUserPassword("20120608a");
user.setUserBirth(new Date());
System.out.println(o.insertUser(user));
session.commit(); //提交
session.close();
System.out.println("====================");
}
@Test
public void testUserLogin(){
System.out.println("==========testUserLogin==========");
UserDao o = session.getMapper(UserDao.class);
User user = new User();
user.setUserName("xhay");
user.setUserPassword("20120608a");
System.out.println(o.selectUserByNameAndPassword(user));
System.out.println("====================");
}
@Test
public void testgetAllUser(){
System.out.println("==========testgetAllUser==========");
UserDao o = session.getMapper(UserDao.class);
List<User> users = o.selectAllUsers();
for (int i = 0; i < users.size(); i++) {
System.out.println(users.get(i));
}
System.out.println("====================");
}
}

下载完整源代码

推荐资料

1、 Java Persistence with MyBatis 3(中文版)

2、 JUnit教程

3、 mybatis

文章目录
  1. 1. 工具准备
  2. 2. 准备数据
  3. 3. 配置
  4. 4. 推荐资料