一、MyBatis快速入门
1.ORM(对象关系映射)
1)指的是持久化数据和实体对象的映射模式,解决面对对象与关系型数据库存在的互不匹配的现象的技术;
2)映射规则:
-
数据表——>类;
-
表字段——>类属性;
-
表数据——>对象;
2.MyBatis介绍
1)好处和特点
- 一种给予Java的持久层框架技术,和数据库相关,里面封装了JDBC,使得开发者只需关注SQL本身,无需多余操作;
- mybatis通过xml或者注解的方式将需要执行的各种Statemengt配置起来,并通过Java对象和Statement中的SQL的动态参数进行映射生成最重要执行的SQL语句;
- 该框架执行完SQL并将结果映射为Java对象并返回;
2)为什么要引入该技术,主要原因:
- 频繁通过原生JDBC语句操作时,造成系统资源浪费影响系统性能;
- SQL语句在代码中硬编码,如果修改SQL语句,就必须修改Java代码,维护代码不易;
- 查询操作时,需要手动将结果集中的数据封装至实体对象中;
- 增删改查需要操作时,需要手动将实体对象的数据设置到SQL语句的占位符;
MyBatis官网:http://www.mybatis.org/mybatis-3/
3.MyBatis入门程序
- 数据准备;
- 导入jar包;
- 在src下创建映射配置文件;(一般都是以类名+Mapper命名的xml文件,比如StudengtMapper.xml)
- 在src下创建核心配置文件;(一般都是以MyBatisConfig命名的xml文件,比如MyBatisConfig.xml)
- 编写测试类完成相关API的使用;
- 运行测试查看结果;
4.测试类需要做的操作配置步骤
-
加载核心配置文件;
InputStream is = Resources.getResourceAsStream(MyBatisConfig.xml);
-
获取SqlSession工厂对象;
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
-
通过SqlSession工厂对象获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
-
执行映射配置文件中的SQL语句,并接受结果
List<Object> list = sqlSession.selectlist("StudentMapper.selectALL"); //object为测试类新建的对象; //StudentMapper.selectALL是映射文件中的SQL语句内容;
-
处理结果(这里我们测试遍历打印)
for (Student stu:list) { System.out.println(stu); }
-
释放资源
sqlSession.close();
is.close();
二、MyBatis相关API
1.Resources的介绍
- 加载资源的工具类;
- 核心方法
- getResourceAsStream(String fileName)
- 返回值:InputStream
- 说明:通过类加载器返回指定资源的字节输入流
2.SqlSessionFactoryBuilder的介绍
- 获取SqlSessionFactory工厂对象的功能类;
- 核心方法
- build(InputStream is)
- 返回值:SqlSessionFactory;
- 说明:通过自定资源输入流获取SqlSession工厂对象;
3.SqlSessionFactory的介绍
- 获取SqlSession构建这对象的工厂接口;
- 核心方法:两个
- openSession();
- 返回值:SqlSession;
- 说明:获取SqlSession构建者对象,并开启
手动
提交对象; - openSession(boolean atuoCommit);
- 返回值:SqlSession;
- 说明:获取SqlSession构建者对象,如果参数为true,则开启
自动
提交对象;
4.SqlSession的介绍
构建者对象接口,用于执行SQL/管理事务、接口代理;
三、MyBatis映射配置文件
1.介绍
- 该文件中包含了数据和对象之间的映射关系一级要执行的SQL语句;
- 这里直接在映射配置文件里面做笔记吧;
<?xml version="1.0" encoding="UTF-8" ?> <!--xml文件的标题-->
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper:核心的根标签;
namespace属性:名称空间,比如ClassesMapper;
-->
<mapper namespace="ClassesMapper">
<!--
select:查询功能的标签;
id属性:唯一标识,配合名称空间找到我们需要执行的SQL语句;
resultType属性:指定结果映射对象类型;
xxxxx:里面是写测试类新建的对象,包括路径
parameterType属性:指定参数映射对象类型;
-->
<select id="selectAll" resultType="xxxxx">
SELECT * FROM classes
</select>
</mapper>
2.查询功能的使用
<!-- 映射配置文件的内容
这里我就简单写了,要看详细的知识请看下3.1中的介绍内容;
select标签可以写多个,里面只能包裹一个select语句
这里假设我们需要按照id查询相关信息,如下写select标签
注意:这里我们只有一个ID参数
-->
<select id="selectbyid" resultType="com.Yuan.bean.student" parameterType="java.lang.Integer">
SELECT * FROM student where id = #{id}
</select>
//测试类的内容
public class student{
public viod s