Mybatis
- 持久型框架,DAO层,数据访问层
持久层技术解决方案
JDBC技术
- connection
- PreparedStatement
- ResultSet
Spring的JDBC-Template
- Spring对Jdbc的简单封装。
Apache的DBUtils
- 他和Spring的JDBC-Temp很像,同样是对JDBC的简单封装。
以上这些都不是框架
JDBC是规范
Spring的Jdbc-Template 和 Apache的DBUtils都只是工具类
Mybatis
- Mybatis是一个持久层框架,用java编写
- 他封装了jdbc操作的很多细节,使开发者只需要关注sql语句,无需关注注册驱动,创建连接等复杂过程。
- 他使用了ORM思想,实现了结果集的封装
ORM思想:
Object Relational Mappging 对象关系映射
就是把数据库表和实体类的属性对应起来
让我们可以操作实体类就可以实现操作数据库表
Mybatis入门
前提创表:
环境配置
创建前:目录包结构
- 创建实体类(User)和dao接口(IUserDao.java)
实体类:
dao接口:
2. 配置Mybatis主配置文件 SqlMapConfig.xml
3. 创建映射文件,在NameSpace标签中指向dao接口,并在此写sql语句
PS: maven下载依赖慢解决办法:
1. 在maven/conf中的setting.xml
添加 (阿里云镜像):
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2. 在maven中pom.xml中添加
<repositories>
<repository>
<id>nexus-aliyun</id>
<name>nexus-aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
加载开发所需的各种依赖
- Mybatis必备依赖:
- Mybatis环境搭建步骤:
- 创建maven工程并导入坐标
- 创建实体类和dao的接口
- 创建Mybatis的主配置文件 SqlMapConfig.xml
- 创建映射配置文件 IUserDao.xml
环境搭建的注意事项
- 创建IUserDao.xml 和 IUserDao.java时,名称是为了和我们之前的知识保持一致。
在Mybatis中,他把持久层的操作接口名称和映射文件叫做Mapper。所以:IUserDao和IUserMapper是一样的。 - 在idea中创建目录的时候,他和包是不一样的。包在创建目录时:com.itcast.dao他是三级结构。而目录在创建时:com.itcast.dao是一级目录结构,要分三次创建对应目录。
- Mybatis的映射配置文件位置必须和dao接口的包结构相同。
- 映射配置文件的Mapper标签namespace属性的取值必须是dao接口的全限定类名。
- 映射配置文件的操作配置(Select···),id属性的取值必须是dao接口的方法名。
PS:当我们遵从3,4,5点之后,在开发中就无需再写dao的实现类
Mybatis 入门案例:
完成前序那些操作,创建好对应文件后,进行如下类的主方法的编写。
package com.itcast.test;
import com.itcast.dao.IUserDao;
import com.itcast.domain.User;
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.IOException;
import java.io.InputStream;
import java.util.List;
/***
* Mybatis的入门案例
*/
public class MybatisTest {
public static void main(String[] args) throws IOException {
//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();
}
}
结果如下: