Mybatis笔记
框架
框架是软件开发中的一套解决方案,不同的框架解决不同的问题,使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方法实现功能,大大提高开发的效率。
三层架构
表现层:用于展示数据;
业务层:处理业务需求;
持久层:是和数据库交互。
Mybatis概述
mybatis是一个持久层框架,用java语言编写;它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建链接等复杂的过程。它使用了ORM思想是西安了结果集的封装。
ORM:Object Relational Mapping 对象关系映射
就是把数据库表和实体类及实体类的属性对应起来,也就是操作实体类就是操作数据库表。
Mybatis环境创建
mybatis环境搭建
-
创建maven工程,导入坐标;
-
创建实体类以及DAO接口;
-
创建mybatis的主配置文件:SqlMapConfig.xml;
-
创建映射配置文件:IUserDao.xml;
环境搭建的注意事项: -
创建IUserDao.xml和IUserDao.java时名称一致是为了和我们之前的知识保持一致;在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper;所以IUserDao与IUserMapper是一样的。
-
在idea一种创建目录的时候跟包是不一样的,包使用com.rain.dao是三级目录,但是在目录创建时确实一级目录;
-
映射配置文件mapper标签namespace属性的取值必须是dao接口的全限定类名;
-
映射配置文件的操作设置,id属性的取值必须是dao接口的方法名。
(完成上述要求,无需再写实现类)
Mybatis入门案例
测试类:
package com.rain.test;
import com.rain.dao.IUserDao;
import com.rain.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;
/**
* @author 王立豪
* @date 2020/7/12 18:54
* mybatis的入门案例
*/
public class MybatisTest {
/**
* 入门案例
* @param args
*/
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 sqlSession = factory.openSession();
// 4.使用SqlSession创建Dao接口的代理对象
IUserDao dao = sqlSession.getMapper(IUserDao.class);
// 5.使用代理对象执行方法
List<User> users = dao.findAll();
for (User user: users
) {
System.out.println(user);
}
// 6.释放资源
sqlSession.close();
in.close();
}
}
SqlMapConfig.xml
<?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">
<!-- 配置连接数据库的四个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
<mappers>
<mapper resource="com/rain/dao/IUserDao.xml"/>
</mappers>
</configuration>
IUserDao.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.rain.dao.IUserDao">
<!-- 配置查询所有-->
<select id="findAll" resultType="com.rain.domain.User">
select * from username;
</select>
</mapper>
注意事项:不要忘记在映射配置文件中高职mybatis要封装到那个实体类中,配置的方式:指定实体类的全限定类名。
入门案例的注解方法
- 将IUserDao.xml移除,在dao接口的方法上使用@select注解,并且指定sql语句,同时需要更改SqlMapConfig的mapper配置,使用class属性指定dao接口的全限定类。
- 实际开发中,都是越简便越好,所以都是采用不写dao实现类的方法。但是Mybatis知识实现类