1、认识框架
1.1、什么是框架
框架就是一个架子,例如,表演节目,舞台搭建好,表演什么节目,根据相应的需求来定。
框架是一个半成品,对于java语言来说,框架就是封装类别人写好的代码,在框架的基础上我们在进一步开发。
1.2、框架解决什么问题
框架解决的是技术整合的问题。软件开发环境和规模都很大,不可能任何一个项目的代码都从零开始,此时就需要一个非常优秀的框架把基础技术整合完毕,我们在它的基础上进一步开发。提高性能,扩展,易于维护,最终提高整个团队的开发效率。
1.3、什么时候使用框架
企业级大型项目开发
1.4、怎么使用框架
Java的框架具有一定的共性:
●使用什么框架,就需要导入框架所必须的jar包
●定义控制框架行为的配置文件(xml)
●使用框架,就是调用框架中的API,来完成一系列相关的操作
2、回顾原生JDBC操作流程
查询用户表中所有的数据
●加载数据库的驱动包
●准备连接数据库的参数
●获取Connection对象
●准备SQL语句,并通过statement或者PreparedStatement来执行SQL
●处理结果
●关闭数据库连接对象
原生JDBC存在的问题
●频繁的连接,释放数据库资源,降低系统的性能
●SQL语句硬编码(就是把SQL语句写在程序中),难以维护SQL语句
●参数和占位符对应问题
●结果集解析麻烦,列名硬编码
3、Mybatis框架概述
MyBatis原本是Apache软件基金会的一个开源项目叫iBatis,2010年这个项目由Apache迁移到了google code上来管理并改名为MyBatis,2013年又迁移到了Github。
MyBatis是一个非常优秀的持久层框架(DAO层框架),它是对JDBC的封装,使得开发者只需要关注SQL语句(业务)本身即可,无需开发者处理加载驱动、获取连接、创建Statement等繁琐的操作。
MyBatis最大的特点就是把SQL语句写在XML配置文件中,而且MyBatis执行完SQL语句之后可以以对象形式返回(POJO/POJO集合等)
MyBatis是一个实现类ORM思想的持久层框架
ORM(Object/Relation Mapping)对象/关系映射,对象就是指的java中的类的实例,关系指的是关系型数据库
ORM思想:将数据库中的关系数据表映射为java中的对象,把对数据表的操作转换为对对象的操作,实现面向对象编程。因此ORM的目的是使得开发人员以面向对象的思想来操作数据库。
比如:原来添加使用的是INSERT INTO…,如果使用了实现ORM思想的持久层框架,就可以在Java程序中直接调用api,比如insert(User),达到操作对象即可操作数据库的效果。
Hibernate是一个全自动的ORM持久层框架,只需要编写POJO,在XML中定义好POJO属性和数据库表字段的映射/对应关系,就可以在Java中实现以面向对象的方式进行操作。SQL语句都不用编写,但是因为性能等问题,市场占有率越来越低。
MyBatis框架是一个半自动的ORM持久层框架,也可以在Java中实现以面向对象的方式操作数据库,但是需要我们自己编写SQL语句,MyBatis是目前比较流行的DAO中持久层的框架技术。
4、Mybatis快速入门
4.1、MyBatis下载
官方学习网站:
https://mybatis.org/mybatis-3/zh/index.htmlMyBatis
下载地址:
https://github.com/mybatis/mybatis-3/releases
下载,然后解压获取mybatis的核心jar包:
4.2、MyBatis快速入门
步骤:
●导入MyBatis框架的核心jar包
●配置文件
●解析配置文件,让mybatis框架通过配置文件的信息,去做一些行为
●通过创建SqlSessionFactoryBuilder来解析配置文件,返回一个SqlSessionFactory对象
●SqlSessionFactory对象,是一个专门用来创建SqlSession的工厂类
●SqlSession中就提供了用于增删改查的相关方法。
mybatis-config.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">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test3?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
解析mybatis-config.xml文件,并获取SqlSessionFactory对象,java文件代码:
//读取配置文件
InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
//首先创建一个SqlSessionFactoryBuilder对象,然后解析配置文件中的内容,
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//创建一个真正的SqlSessionFactory对象,SqlSessionFactory就类似于数据源对象DataSource
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
//创建一个SqlSession对象,该对象下就提供类一系列增删改查的方法
SqlSession sqlSession=sqlSessionFactory.openSession();
以User为例,来完成数据库数据查询的操作:
提供一个User类:
public class