1.创建maven工程
创建mybatis的工程,工程信息:

<groupId>com.itheima</groupId>
<artifactId>day01_eesy_01mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

2.添加MyBatis3.4.5的坐标
在pom.xml文件中添加坐标(此处可以省略过)

<dependencies>
<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>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
</dependencies>

3.编写User实体类
注意实现序列化接口。序列化简单的说就是在不同时间或不同平台的JVM之间共享实例对象。

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 + '\'' +
'}';
}
}

3.编写持久层IUserDao接口

public interface IUserDao{
//可以省略public,返回类型List,查询所有功能
public List<USer> findAll();
}

4.编写持久层映射文件
注意:映射配置文件的位置必须和dao接口的包结构相同

<?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">

<!–配置查询所有,这些代码为配置映射信息,有了执行sql语句,就可以获取PreparedStatement对象
有了PreparedStatement之后就可以进行参数的设置,之后就是返回结果集,遍历结果集。同上文
JDBC
–>

<select id="findAll" resultType="com.itheima.domain.User">
select * from user
</select>
</mapper>

解释说明:

# mapper:它是映射文件的根元素结点,注意是映射文件,他只有一个属性,那就是namespace

* namespace:用于区分不同的mapper,全局唯一,通常写持久层接口的地址。

# select:表示查询语句。

* id属性:该命名空间下唯一标识符,注意它只是一个标识符,可以写别的东西。

* resultType属性: 表示SQL语句返回值类型。即List<User>中的User类型。

5.编写SqlMapConfig.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuraion
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtdmybatis-3-config.dtd">
<configuration>
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisbd"/>
<property name="username" value="root"/>
<property name="password" value="200828"/> 
</dataSource>
<environment>
<environments>
<!--告知mybatis映射配置文件的位置-->
<mappers>
<!--基于XML的配置方式-->
<mapper resource="com/itheima/dao/IUserDao.xml"><mapper/>
<mappers>
</configuration>

解释说明:

# configuration:配置文件的根元素结点。

# environments:表示配置MyBatis的多套运行环境。将sql映射到多个不同得到数据库中,该元素节点下可以有多个environment子元素结点。可以呀开发环境和测试环境。但是必须指定其中一个为默认环境用default表示。

# environment:表示MyBatis的一套配置环境,需要指定运行环境ID,事务管理,数据源配置等相关信息(transactionManager,dataSource)。

# properties:该属性文件描述数据库连接的相关配置Driver,url,username,password.如果在<configuration>中引入了database.properties,该属性通过resource属性从外部指定的properties属性配置文件,value后面跟${},现在用yaml比较多

# mappers:告诉MyBatis去哪里找SQL映射文件。

# mapper:具体指定SQL映射文件的路径 resource:是通过XML来进行配置的,class:是通过注解来配置的.

6.编写测试类

public class MybatisTest{
public static void main(String[] args) throws Exception{
//此处用到了工厂模式,此后稍作讲解
//1.读取配置文件
InputStream in = Resource.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory的构建者对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//3.使用构建者创建SqlSessionFactory工厂
SqlSessionFactory factory = builder.build(in);
//4.使用工厂创建SqlSession对象
SqlSession session = factory.openSession();
//5.使用session创建IUserDao代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//6.使用代理对象查询方法,返回List
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
//7.释放资源
session.close();
in.close();
}
}

需要牢记这七个步骤很重要

7.MyBatis的核心控制对象
MyBatis的三个基本要素:核心接口和类,核心配置文件,SQL映射文件

SqlSessionFactoryBuilder—>build()—>SqlSessionFactory—>openSession()—>SqlSession

7.1SqlSessionFactory的构造者—-SqlSessionFactoryBuilder
作用:

负责创建SqlSessionFactory,并且提供了多个build()方法

特点:

用过即丢,一旦创建了SqlSessionFactory对象,SqlSessionFactoryBuilder就不需要存在了,因此它的最佳使用范围就是存在于方法体内,也就是局部变量。

7.2SqlSession的工厂—SqlSessionFactory
作用:

SqlSessionFactory就是创建SqlSession的工厂,有了它之后就可以通过.openSession()来创建SqlSession对象。

生命周期和作用域:

一旦创建,在整个应用运行过程中始终存在。,随着应用的声明周期一致存在。放在静态代码块中可进行优化

7.3使用SqlSession进行数据的持久化操作
作用:

用于持久化操作对象,类似于jdbc的connection,它提供了面向数据库执行sql命令的所有方法,增删改查等,可以通过SqlSessson实例直接运行已经映射的SQL语句。

作用域和生命周期:

SqlSession对应一次数据库会话。最佳作用域是request作用域或者方法体作用域。

使用方式:

通过代理对象进行方法查询

IUserDao userDao = session.getMapper(IUserDao.class);

List<User> users = userDao.findAll();

8.补充配置文件一些基本元素
8.1typeAliases元素:
作用是配置类型别名,通过于MyBatis的SQL映射文件相关联,减少冗余

<typeAliases>
<typeAlias alias="user" type="com.itheima.domain.Usr"/>
</typeAliases>

<!–此时resultType可以写成 User–>

 

版权声明:本文为YeePingg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/YeePingg/p/15031313.html