框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求! 如图:
ORM(Object Relational Mapping): 对象关系映射
指的是持久化数据和实体对象的映射模式,为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。
如图:
具体映射关系如下图:
原始 JDBC 的操作问题分析
原始 JDBC 的操作问题解决方案
Mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
Mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中
sql的动态参数进行映射生成最终执行的sql语句。
最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问 题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。
①添加MyBatis的jar包
②创建Student数据表
③编写Studentr实体类
④编写映射文件StudentMapper.xml
⑤编写核心文件MyBatisConfig.xml
⑥编写测试类
1) 导入MyBatis的jar包
mysql-connector-java-5.1.37-bin.jar mybatis-3.5.3.jar
log4j-1.2.17.jar
2) 创建student数据表
3) 编写Student实体
4) 编写StudentMapper.xml映射文件
5) 编写MyBatis核心文件(MyBatisConfig.xml)
org.apache.ibatis.io.Resources:加载资源的工具类。
核心方法
org.apache.ibatis.session.SqlSessionFactoryBuilder:获取 SqlSessionFactory 工厂对象的功能类
核心方法
通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象
其中, Resources 工具类,这个类在 org.apache.ibatis.io 包中。Resources 类帮助你从类路径下、文件系统或一个 web URL 中加载资源文件。
org.apache.ibatis.session.SqlSessionFactory:获取 SqlSession 构建者对象的工厂接口。核心api
org.apache.ibatis.session.SqlSession:构建者对象接口。用于执行 SQL、管理事务、接口代理。
核心api
SqlSession 实例在 MyBatis 中是非常强大的一个类。在这里你会看到所有执行语句、提交或回滚事务和获取映射器实例的方法。
映射配置文件包含了数据和对象之间的映射关系以及要执行的 SQL 语句
查询功能标签 : < select >
属性
id:唯一标识, 配合名称空间使用。parameterType:指定参数映射的对象类型。resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例
新增功能标签 : < insert >
属性
id:唯一标识, 配合名称空间使用。parameterType:指定参数映射的对象类型。resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例
修改功能标签 : < update >
属性
id:唯一标识, 配合名称空间使用。parameterType:指定参数映射的对象类型。resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例
查询功能标签 : < delete >
属性
id:唯一标识, 配合名称空间使用。parameterType:指定参数映射的对象类型。resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例
总结: 大家可以发现crud操作,除了标签名称以及sql语句不一样之外,其他属性参数基本一致。
核心配置文件包含了 MyBatis 最核心的设置和属性信息。如数据库的连接、事务、连接池信息等。
如下图:
properties标签引入外部文件
具体使用,如下配置
< typeAliases >:为全类名起别名的父标签。
< typeAlias >:为全类名起别名的子标签。属性
type:指定全类名alias:指定别名
< package >:为指定包下所有类起别名的子标签。(别名就是类名)
如下图
具体如下配置
分层思想:控制层(controller)、业务层(service)、持久层(dao)。
调用流程
关键代码:
持久层代码:
业务层代码
控制层代码
在日常开发过程中,排查问题时难免需要输出 MyBatis 真正执行的 SQL 语句、参数、结果等信息,我们就可以借助 LOG4J 的功能来实现执行信息的输出。
使用步骤