1.什么是Mybatis?
- 概念
-
Mybatis是一款优秀的基于ORM的,且面向sql的持久层框架,主要用于动态构造Sql方面.
-
可以使用XML或注解用于配置和原始映射(原生Map)
-
可以将接口和普通Java对象映射成数据库中的记录
-
MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
-
但是不管什么持久层框架,底层用的都是jdbc.
注:(关于mybatis和hibernate的区别我在另一篇文章会说)
2.为什么不用JDBC?
- 缺点
-
Jdbc频繁创建打开,关闭数据连接太消耗资源.
-
sql语句有硬编码嫌疑,不利于维护.
-
sql参数设置硬编码,不利于维护.
-
结果集参数获取与遍历复杂,存在硬编码,不利于维护,期望能够查询后返回一个java对象
3.Mybatis执行流程(架构体系)
- 流程
-
mybatis有一个主配置文件(核心配置文件),还要依赖多个映射文件(有多少张表有多少个映射文件).
-
加载配置文件可以通过SqlSessionFactoryBuilder来创建,得到一个SqlSessionFactory.
-
再创建一个SqlSession接口,这个接口只负责调用,调用下面的一个执行器,执行器会帮我们包装一些东西,会创建一个MapStatement(和jdbc创建Preparement一样),它会访问数据库,在这之前它会接受输入映射(简单数据类型,pojo)最后会输出映射(简单数据类型,pojo,list).
4.如何在项目中应用Mybatis框架呢?
(1)准备工作
-
我们拿顾客和订单的例子来说明,在数据库中创建两个表,一个顾客表,一个订单表.
user表
order表
-
如图,新建一个java项目,web项目也可以,建如图所示的目录结构,创建Source Folder,起名config;创建Folder,起名lib.
-
src的目录结构
-
config文件夹内我们要创建好所需要的配置文件,里面内容先不写.(注:只是创建而已)
-
导包,lib目录放入我们需要的包
(2)配置文件说明
-
jdbc.properties是数据库信息的配置文件,这个应该都知道,我们连接数据库需要数据库的驱动,用户名和密码
-
log4j.properties就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境
-
SqlMapConfig.xml就是我们Mybatis的主配置文件
-
configuration : MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类.
-
properties标签 : 加载数据库配置文件,resource是数据库配置文件名,因为主配置文件和数据库配置文件在同一目录下所以直接写文件名,再加载数据库的用户名和密码.
-
typeAliases标签 : typeAlias属性是单个别名定义,给具体的pojo类起个别名,缩短代码长度,以后出现这个pojo类的全限定名都可以用别名替代;package属性是为某个包下所有类批量起别名(常用).
-
environments标签 : 用于对我们需要访问的数据库配置进行设置,下面有两个节点,事务管理器配置
transactionManager
,另一个是数据源配置dataSource
. -
mappers标签 : 每个pojo类都有一个对应的映射文件,所以用于加载配置文件,该标签可以加载固定的映射文件,也可以加载一个包下的所有映射文件.