Mybatis概述
持久层框架
使用ORM思想实现了结果集的封装
ORM:Object Relational Mapping 对象关系映射
简单的说:就是把数据库表和实体类以及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库类
第一步:导入坐标
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
第二步:创建实体类以及DAO的接口
第三步:创建Mybatis的主配置文件
SqlMapConfig.xml
`在这里插<?xml version="1.0" encoding="UTF-8" ?>
入代码片`第四步:创建映射配置文件
UAccountDao.xml
<?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.IAccountDao">
<!--配置查询所有 resultType告诉mybatis要封装的实体类-->
<select id="findAll" resultType="com.itheima.domain.Account">
select * from account
</select>
</mapper>
注意:
1.mybatis的映射配置文件位置必须和dao接口的包结果相同
2.映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
3.映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
遵从以上三点后,就无须再写dao的实现类
第五步:使用mybatis
package com.itheima.test;
import com.itheima.dao.IAccountDao;
import com.itheima.domain.Account;
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 java.io.InputStream;
import java.util.List;
public class MybatisTest {
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接口的代理对象
IAccountDao accountDao=session.getMapper(IAccountDao.class);
//5.使用代理对象执行方法
List<Account> accounts=accountDao.findAll();
for(Account account:accounts){
System.out.println(account);
}
//6.释放资源
session.close();
}
}