maven+mybatis框架(二)

需要热血                                                                                       

                                                                                                       ——文记

目录

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

登登登__

期待每一份真诚

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值