Mybatis 学习笔记
Mybatis 是一个基于Java的持久层框架。
Mybatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。Mybatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。Mybatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
使用 MyBatis 对比 JDBC 有什么好处?
①数据库连接,使用时就创建,使用完毕就关闭,这样会对数据库进行频繁的获取连接和关闭连接,造成数据库资源浪费,影响数据库性能。
设想解决:使用数据库连接池管理数据库连接
②将 sql 语句硬编码到程序中,如果sql语句修改了,需要重新编译 Java 代码,不利于系统维护
设想解决:将 sql 语句配置到 xml 文件中,即使 sql 语句变化了,我们也不需要对 Java 代码进行修改,重新编译
③在 PreparedStatement 中设置参数,对占位符设置值都是硬编码在Java代码中,不利于系统维护
设想解决:将 sql 语句以及占位符和参数都配置到 xml 文件中
④从 resultset 中遍历结果集时,对表的字段存在硬编码,不利于系统维护
设想解决:将查询的结果集自动映射为 Java 对象
⑤重复性代码特别多,频繁的 try-catch
设想解决:将其整合到一个 try-catch 代码块中
⑥缓存做的很差,如果存在数据量很大的情况下,这种方式性能特别低
设想解决:集成缓存框架去操作数据库
⑦sql 的移植性不好,如果换个数据库,那么sql 语句可能要重写
设想解决:在 JDBC 和 数据库之间插入第三方框架,用第三方去生成 sql 语句,屏蔽数据库的差异
Mybatis 通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等复杂过程。使用了ORM思想实现了结果集的封装。
ORM思想
Object Relational Mapping 对象关系映射
就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就能实现操作数据库表。
(一)前期环境准备
可以参照mybatis的官网进行学习:
https://mybatis.org/mybatis-3/zh/getting-started.html
入门案例之环境配置
新建一个maven项目,默认什么也不选,走下一步。
设定项目名称等信息,点击完成
maven项目创建完成,需要配置pom.xml文件,默认内容如下
配置打包方式
<packaging>jar</packaging>
mybatis的坐标,注入依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
</dependencies>
保存后如果没有在右侧生成对应的依赖。需要检查有没有Dependencies 文件夹
IntelliJ中存在管理Maven Project的窗口:
View –> Tool Windows –> Maven Projects
没有发现 Dependencies 文件夹则说明项目中并没有依赖关系,但是在pom.xml文件中已经加入了依赖所需的内容,后来发现:需要重新导入Maven的 pom.xml 文件内容
pom.xml –> Maven –> Reload project
重新导入即可在 External Libraries 中发现依赖的所有包
还需要导入数据库的依赖,输入mysql后,会自动匹配mysql的版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
这样,创建maven项目和配置mybatis坐标就完成了