MyBatis
1、简介
1.1 什么是Mybatis
-
MyBatis 是一款优秀的持久层框架;
-
它支持自定义 SQL、存储过程以及高级映射。
-
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
-
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
1.2 持久化
-
持久化就是将程序的数据在持久状态和瞬时状态转化的过程
-
数据库(Jdbc),io文件持久化。
为什么要持久化?
-
有一些对象,不能让他丢掉
-
内存太贵
1.3 持久层
Dao层
Service层
Controller层
-
完成持久化工作的代码块
-
层界限十分明显
1.4 为什么需要MyBatis
-
帮助程序员将数据存入到数据库中
-
方便
-
传统的JDBC代码太复杂了,简化,框架,自动化
-
不用MyBatis也可以,技术没有高低之分
-
优点:
-
简单易学
-
灵活
-
sql和代码的分离,提高了可维护性。
-
提供映射标签,支持对象与数据库的orm字段关系映射
-
提供对象关系映射标签,支持对象关系组建维护
-
提供xml标签,支持编写动态sql
-
2、第一个Mybatis程序
2.1 搭建环境
1、创建一个普通的maven项目
2、删除src目录 (就可以把此工程当做父工程了,然后创建子工程)
3、导入maven依赖(pom.xml)
<!--导入依赖-->
<dependencies>
<!--mysqlq驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2.2 创建一个模块
右击刚刚创建的maven项目
选择module创建子项目
补充标记好的文件夹
1、编写mybatis的核心配置文件
在resources(标记为resources)中创建MyBatis-config.xml的文件
内容:
2、编写mybatis工具类
在标记为sources的文件夹中创建包,编写工具类
//sqlSessionFactory --> sqlSession
public class MybatisUtils {
static SqlSessionFactory sqlSessionFactory = null;
static {
try {
//使用Mybatis第一步 :获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例.
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
2.3 编写代码
-
实体类
-
Dao接口
public interface UserDao {
public List<User> getUserList();
} -
接口实现类 (由原来的UserDaoImpl转变为一个Mapper配置文件)
-
测试
注意点:
org.apache.ibatis.binding.BindingException: Type interface com.kuang.dao.UserDao is not known to the MapperRegistry.
MapperRegistry是什么?
核心配置文件(MyBatis-config.xml)中注册mappers
<!--此处为我的包的路径-->
<!--MyBatis-congfig.xml中各个标签有规定顺序,这个在后边-->
<mappers>
<mapper resource="com/alice/dao/UserMapper.xml"/>
</mappers>-
junit测试
-
可能会遇到的问题:
-
配置文件没有注册
-
绑定接口错误
-
方法名不对
-
返回类型不对
-
Maven导出资源问题