2.2 搭建Mybatis开发环境

2.2.1 创建maven工程

1
2
3
4
## 创建mybatis01的工程,工程信息如下:
Groupid:com.ithiema
ArtifactId:mybatis01
Packing:jar

2.2.2 添加Mybatis3.4.5的坐标

在pom.xml文件中添加Mybatis3.4.5的坐标,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>

2.2.3 编写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
public class User implements Serializable{

private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;

public Integer getId() { return id; }

public void setId(Integer id) { this.id = id; }

public String getUsername() { return username; }

public void setUsername(String username) { this.username = username; }

public Date getBirthday() { return birthday; }

public void setBirthday(Date birthday) { this.birthday = birthday; }

public String getSex() { return sex; }

public void setSex(String sex) { this.sex = sex; }

public String getAddress() { return address; }

public void setAddress(String address) { this.address = address; }

@Override
public String toString() {
return "User{" + "id=" + id + ", username='" + username + '\'' +
", birthday=" + birthday + ", sex='" + sex + '\'' +
", address='" + address + '\'' + '}';
}
}

2.2.4 编写持久层接口IUserDao

  • IUserDao接口就是我们的持久层接口(也可以写成UserDao或者UserMapper),具体代码如下:
1
2
3
4
5
6
7
public interface IUserDao {
/**
* 查询所有操作
* @return
*/
List<User> findAll();
}

2.2.5 编写dao接口的映射文件

IUserDao.xml要求:

  • 创建位置:必须和持久层接口在相同的包中。
  • 名称:必须以持久层接口名称命名文件名,扩展名是.xml
1
2
3
4
5
6
7
8
9
10
<?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.itheima.dao.IUserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.itheima.domain.User">
select * from user
</select>
</mapper>

2.2.6 编写映射配置文件

SqlMapConfig.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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>

<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/itheima/dao/IUserDao.xml"/>
</mappers>
</configuration>

2.2.7 编写测试类

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
public class MybatisTest {

/**
* 入门案例
* @param args
*/
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
//6.释放资源
session.close();
in.close();
}
}

2.2.8 环境搭建的注意事项

  1. 创建IUserDao.xmlIUserDao.java时名称是为了与之前的知识保持一致。在Mybatis中它把持久层的操作接口名称和映射文件也叫作:Mapper

    所以:IUserDaoIUserMapper是一样的

  2. 在idea中创建目录的时候,它和包是不一样的

    包在创建时,com.itheima.dao三级结构

    目录在创建时,com.itheima.dao一级结构

  3. Mybatis的映射文件位置必须和dao接口的包结构保持一致

  4. 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名

  5. 映射配置文件的操作配置(select),属性id的取值必须是dao接口的方法名

    当我们遵从了3、4、5点之后,在开发中就无须在写dao的实现类