需要热血
——文记
目录
ORM框架
mybatis框架的使用
关于mybatis
起源
特点
案例
配置
核心配置
environments 是配置mybatis当前工作的数据库环境的地方
dataSource 表示的是数据源;至少会包括该连接数据库的四种信息
transactionManager
typeAliases
properties
settings
mappers
日志配置
基本封装
映射
映射sql
select
insert
update
delete
ResultMap
一对一映射
一对多映射
动态
if
choose
where
trim
分页查询插件
ORM框架
mybatis框架的使用
使用mybatis框架:
1.创建maven项目。
2.引用mybatis框架的依赖信息(坐标信息)
mysql驱动依赖信息
3.编写配置文件 添加数据库连接信息 添加映射关系
4.根据mybatis,创建映射接口和映射文件
规则1: 映射接口的名字和映射文件的名字相同。
规则2: namespace 定义接口的全限定名
规则3:<select> id=方法名 resultType=方法的返回值全限定名
规则4: 去掉分号 参数值通过方法获取 #{参数名}
5.编写测试类,获取sqlSession对象--获取映射器接口的对象--执行查询方法(Mybatis帮助我们实现了接口,并实现了抽象方法)
6.考虑mybatis执行需要提供日志信息:
添加日志框架 及 日志的配置信息
关于mybatis
起源
MyBatis
是一款优秀的持久层开源框架,它支持自定义
SQL
、存储过程以及高级映射。
MyBatis
免除了 几乎所有的 JDBC
代码以及设置参数和获取结果集的工作。
MyBatis
可以通过简单的
XML
或注解来配置 和映射原始类型、接口和 Java POJO
(Plain Old java Objects,普通老式
Java
对象)为数据库中的记录。
MyBatis
的前身是
iBATIS
,
iBATIS
于
2002
年由
ClintonBegin
创建。
MyBatis3
是
iBATIS
的全新设计,支持注解和Mapper
。
MyBatis
流行的主要原因在于它的简单性和易使用性。在
Java
应用程序中,数据持久化层涉及到的工作有:
- 将从数据库查询到的数据生成所需要的Java对象
- 将Java对象中的数据通SQL持久化到数据库中
MyBatis
通过抽象底层的
JDBC
代码,自动化封装
SQL
结果集产生
Java
对象、
Java
对象的数据持久化数据库中的过程使得对SQL
的使用变得容易。
特点
通过上面我们了解到
Mybatis
的主要功能是
数据持久化
,这个时候你可能会回想起之前的
JDBC
课程,既 然我们已经掌握了JDBC
为什么还要再去学习
Mybatis
呢?主要原因有以下几个方面:
1.
消除了大量的
JDBC
冗余代码
2.
有低的学习曲线
3.
能很好地与传统数据库协同工作
4.
提供了与
Spring
框架的集成支持
5.
提供了与第三方缓存类库的集成支持
6.
引入了更好的性能
案例
编辑
pom.xml
文件,导入
项目依赖的
jar
包。
访问
web
远程仓库地址:
https://www.mvnrepository.com/
下载依赖的
jar
包
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version> </dependency> <!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version> </dependency>
在
resources
目录下创建
mybatis-config.xml
配置文件
在resources目录下创建log4j.propertis文件
在bean包中创建Student.java
在mapper包中创建StudentMapper接口
在resources目录下先创建文件夹com.briup.mapper,然后在目录中创建StudentMapper.xml文件
编写测试代码。测试查询功能
配置
核心配置
在核心配置的添加标签一定要按照以下顺序添加
1. properties
2. settings
3. typeAliases
4. environments
5. mappers
environments 是配置mybatis当前工作的数据库环境的地方
MyBatis
可以支持配置多个
dataSource
环境,可以将应用部署到不同的环境上,如
DEV(
开发环境
)
,
TEST
(测试环境),
QA
(质量评估环境)
,UAT(
用户验收环境
),PRODUCTION
(生产环境),可以通过将
默认
environments
值设置成想要的
environment
的
id
值
.
dataSource 表示的是数据源;至少会包括该连接数据库的四种信息
POOLED
:
MyBatis
会创建一个数据库连接池,连接池中的一个连接将会被用作数据库操作
(
分配,
管理,释放
)
。一旦数据库操作完成,
MyBatis
会将此连接返回给连接池。
transactionManager
JDBC
事务管理器的使用,是在
JDBC
程序负责管理数据库连接的生命周期(提交、回退等等)的时候。
如果将
TransactionManager
属性设置成
JDBC
,
MyBatis
内部将使用
JdbcTransactionFactory
类创建
TransactionManager
。例如,部署到
ApacheTomcat
的应用程序,需要应用程序自己管理事务。
typeAliases
properties
属性配置元素
properties
可以将配置值写死到
mybatis-config.xml
中
,
也可以具体到一个属性文件中
,
并且使
用属性文件的
key
名作为占位符。
在上述的配置中,我们将数据库连接属性配置到了
application.properties
文件中,并且为
driver
,
URL
等
属性使用了占位符
.
在
db.properties
文件中配置数据库连接参数,如下所示:
settings
大多数情况下,【这些参数使用它们的默认值即可】,不需要我们单独设置
mappers
Mapper
文件中包含了要执行的
SQL
语句,我们需要在
mybatis-config.xml
文件中配置
Mapper
文件的位置。
package
属性用来指向可以找到
Mapper
接口的包名
日志配置
Mybatis
通过使用内置的日志工厂提供日志功能。内置日志工厂将会把日志工作委托给日志类实现
1.
添加
log4j
依赖的
jar
包
2.
创建
log4j
的配置文件
基本封装
每次读取配置文件
,
产生一个工厂对象
SqlSessionFactory,
然后再生成出
SqlSession
对象
,
这个过程虽然并不
复杂
,
但是也都是一些重复的代码流程
,
所以我们可以对其进行一个简单的封装。
映射
关系型数据库和
SQL
是经受时间考验和验证的数据存储机制。和其他的
ORM
框架如
Hibernate
不同,
MyBatis
鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务
器所提供的
SQL
语句的巨大威力。
与此同时,
MyBaits
消除了书写大量冗余代码的痛苦,它让使用
SQL
更容易。在代码里直接嵌套
SQL
语句
是很差的编码实践,并且维护起来困难。
MyBaits
使用了映射文件或注解来配置
SQL
语句。
映射sql
select
insert
update
delete
ResultMap
ResultMaps
被用来将
SELECT
语句的结果集映射到
java
对象属性中。在映射文件中,可以先定义出结果集
映射
resultMap
,然后在一些
SELECT
语句上引用这个
resultMap
。
所以,
ResultMap
就是提前定义好的一个映射规则,
select
语句可以使用
ResultMap
的映射规则来处理查询
结果。
MyBatis
的结果集映射
resultMap
非常强大,可以使用它指定
sql
查询出的结果集,会被怎么处理并封装成
对象,也可以使用它完成复杂查询的映射,例如一对一、一对多关系的
SELECT
语句。
在 select 标签中,引用这个resultMap
一对一映射
一对多映射
动态
if
标签被用来通过条件嵌入
SQL
片段,如果条件为
true
,则相应地
SQL
片段将会被添加到
SQL
语句中。
可以根据学生
id
或者学生姓名查询学生信息
choose
有时候,查询功能是以查询类别为基础的。
例如,页面中有一个下拉列表,可以选择查询的类别,可以选择根据讲师查询、或者根据课程名查询、 或者根据时间查询等等,选择了列表之后,再输入关键字进行查询。MyBatis
提供了 标签可以支持此类 型的查询处理。
where
有时候,所有的查询条件应该是可选的。
在需要使用至少一种查询条件的情况下,可以直接使用
WHERE
子句,如果有多个条件,需要在条件中添
加
AND
或
OR
。
MyBatis
提供了 元素支持这种类型的动态
SQL
语句。
trim
元素和 元素类似,同时 提供了添加 前缀
/
后缀或者移除前缀
/
后缀的功能。
prefix
表示有一个
if
成立则插入
where
语句
suffix
表示后缀
,
和
prefix
相反
suffixOverrides="and"
表示如果最后生成的
sql
语句多一个
and,
则自动去掉
.
prefixOverrides
的意思是处理前缀
,
和
suffixOverrides
相反
分页查询插件
https://pagehelper.github.io/
reasonable
:分页合理化参数,默认值为
false
。当该参数设置为
true
时,
pageNum<=0
时会
查询第一页,
pageNum>pages
(超过总数时),会查询最后一页。默认
false
时,直接根据
参数进行查询。
helperDialect
:指定连接数据库为
mysql