跟我一起学 mybatis
📦个人主页:楠羽
🏆简介:一个大二的科班出身的,主要研究 Java 后端开发
⏰座右铭:成功之前我们要做应该做的事情,成功之后才能做我们喜欢的事
💕 过客的你,可以给博主留下一个小小的关注吗?这是给博主最大的支持。以后博主会更新大量的优质的作品!!!!
一.Mybatis 快速入门
1.1 框架介绍
框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求!
如图:

1.2 ORM 介绍
ORM(Object Relational Mapping): 对象关系映射
指的是持久化数据和实体对象的映射模式,为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。
如图:

具体映射关系如下图:

1.3 原始 jdbc 操作(查询数据)

1.4 原始 jdbc 操作(插入数据)

1.5 原始 jdbc 操作的分析
原始 JDBC 的操作问题分析
1.频繁创建和销毁数据库的连接会造成系统资源浪费从而影响系统性能。
原始 JDBC 的操作问题解决方案
1.使用数据库连接池初始化连接资源。
将 sql 语句抽取到配置文件中。
使用反射、内省等底层技术,将实体与表进行属性与字段的自动映射
1.6 什么是 Mybatis
mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句。
最后 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。
MyBatis 官网地址:http://www.mybatis.org/mybatis-3/
1.7 Mybatis 的快速入门
MyBatis 开发步骤:
①添加 MyBatis 的 jar 包
②创建 Student 数据表
③编写 Studentr 实体类
④编写映射文件 StudentMapper.xml
⑤编写核心文件 MyBatisConfig.xml
⑥编写测试类
1.7.1 环境搭建
1)导入 MyBatis 的 jar 包
mysql-connector-java-5.1.37-bin.jar
mybatis-3.5.3.jar
log4j-1.2.17.jar
创建 student 数据表

编写 Student 实体
4)编写 StudentMapper.xml 映射文件
编写 MyBatis 核心文件
1.7.2 编写测试代码
1.8 知识小结
框架
框架是一款半成品软件,我们可以基于框架继续开发,从而完成一些个性化的需求。
ORM
对象关系映射,数据和实体对象的映射。
MyBatis
是一个优秀的基于 Java 的持久层框架,它内部封装了 JDBC。
二. MyBatis 的相关 api
2.1 Resources
org.apache.ibatis.io.Resources:加载资源的工具类。
核心方法

2.2 构建器 SqlSessionFactoryBuilder
org.apache.ibatis.session.SqlSessionFactoryBuilder:获取 SqlSessionFactory 工厂对象的功能类
核心方法

通过加载 mybatis 的核心文件的输入流的形式构建一个 SqlSessionFactory 对象
其中, Resources 工具类,这个类在 org.apache.ibatis.io 包中。Resources 类帮助你从类路径下、文件系统或一个 web URL 中加载资源文件。
2.3 工厂对象 SqlSessionFactory
org.apache.ibatis.session.SqlSessionFactory:获取 SqlSession 构建者对象的工厂接口。
核心 api

2.4 SqlSession 会话对象
org.apache.ibatis.session.SqlSession:构建者对象接口。用于执行 SQL、管理事务、接口代理。
核心 api

SqlSession 实例在 MyBatis 中是非常强大的一个类。在这里你会看到所有执行语句、提交或回滚事务和获取映射器实例的方法。
三.MyBatis 映射配置文件
3.1 映射配置文件介绍
映射配置文件包含了数据和对象之间的映射关系以及要执行的 SQL 语句

3.2 查询功能
<select>:查询功能标签。
属性
id:唯一标识, 配合名称空间使用。
parameterType:指定参数映射的对象类型。
resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例

3.3 新增功能
<insert>:新增功能标签。
属性
id:唯一标识, 配合名称空间使用。
parameterType:指定参数映射的对象类型。
resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例

3.4 修改功能
<update>:修改功能标签。
属性
id:唯一标识, 配合名称空间使用。
parameterType:指定参数映射的对象类型。
resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例

3.5 删除功能
<delete>:查询功能标签。
属性
id:唯一标识, 配合名称空间使用。
parameterType:指定参数映射的对象类型。
resultType:指定结果映射的对象类型。
SQL 获取参数: #{属性名}
示例

总结: 大家可以发现 crud 操作,除了标签名称以及 sql 语句不一样之外,其他属性参数基本一致。
3.6 映射配置文件小结

四.Mybatis 核心配置文件介绍
4.1 核心配置文件介绍
核心配置文件包含了 MyBatis 最核心的设置和属性信息。如数据库的连接、事务、连接池信息等。
如下图:
4.2 数据库连接配置文件引入
properties 标签引入外部文件
具体使用,如下配置
4.3 起别名
<typeAliases>:为全类名起别名的父标签。
<typeAlias>:为全类名起别名的子标签。
属性
type:指定全类名
alias:指定别名
<package>:为指定包下所有类起别名的子标签。(别名就是类名)
如下图:

具体如下配置
4.4 总结

五.Mybatis 传统方式开发
5.1 Dao 层传统实现方式
分层思想:控制层(controller)、业务层(service)、持久层(dao)。
调用流程
5.2 LOG4J 的配置和使用
在日常开发过程中,排查问题时难免需要输出 MyBatis 真正执行的 SQL 语句、参数、结果等信息,我们就可以借助 LOG4J 的功能来实现执行信息的输出。
使用步骤:

版权声明: 本文为 InfoQ 作者【楠羽】的原创文章。
原文链接:【http://xie.infoq.cn/article/ada0dc17c5f59826bf265c897】。文章转载请联系作者。
评论