mybatis学习记录

1.1 Mybatis介绍

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射

Mysql入门实现步骤:

1.编辑mybatis-config.xml核心配置文件

1.1执行数据源配置

2.编辑POJO实体对象.要求与数据库表中的字段一一对应

3.编辑Mapper接口. 添加接口方法

4.编辑接口的实现类(配置文件方式) 要求namespace id resultType

5.mybatis加载指定的mapper映射文件

6.创建SqlSessionFactory工厂对象

7.获取SqlSession,开启数据库链接

8.获取接口对象(代理对象)

9.调用接口方法,获取返回值结果

10.关闭sqlSession链接.

2.1 ORM思想

对象关系映射,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。简单来说就是利用对象操作数据库

1. 对象应该与数据库中的表一一映射.

2. 对象中的属性应该与表中的字段一一映射.

3. 其中的映射应该由程序自动完成.无需人为干预.

JDBC的优缺点

弊端:

1. 无论如何执行都必须获取数据库链接. 链接池 c3p0 druid HK链接池

2. 操作sql语句时,步骤繁琐. 不便于学习记忆.

3. 资源必须手动关闭.

优点:

操作数据库最快的方式就是JDBC. 协议 TCP

mybaties

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。(mybatis在内部将JDBC封装).

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

知识整理:

1.持久化 : 计算机在计算时,数据都在内存中.如果断电则数据清空,所以要求将内存数据保存到磁盘中. 概念.

2.持久层: 程序通过Dao/Mapper 与数据库进行交互的层级代码 (Controller层 Service层 Dao/Mapper层) 具体操作.

小结: Mybatis是一个优秀的持久层框架,基于ORM设计思想,实现了以对象的方式操作数据库.

了解: Mybatis的ORM并不完全,只完成了结果集映射,但是Sql需要自己手写.所以也称之为半自动化的ORM映射框架.

2. Mybatis框架总结

2.1 ORM思想

概括: 利用对象的方式封装数据库

核心规则:

对象与表一一映射.

对象的属性与表中的字段一一映射.

2.2 Mybaits框架介绍

小结: Mybatis是一个优秀的持久层框架,基于ORM设计思想,实现了以对象的方式操作数据库.

2.3 Mybaits使用步骤

2.3.1 导入jar包

课堂使用的是springboot整合mybatis的版本.但是使用其中的依赖包 3.5.7的版本.

2). mysql的驱动版本 mysql:mysql-connector-java:8.0.22

3). 驱动的配置: com.mysql.cj.jdbc.Driver

4). 高版本应该使用高版本数据库

2.3.2 编辑核心配置文件

数据库环境的配置

Mapper接口与xml映射文件的绑定关系.

2.3.3 创建接口/xml映射文件

说明: 接口与xml映射文件 一对一映射.

2.3.3 入门案例步骤

指定mybatis-config.xml的路径

读取指定的核心配置文件.

通过SelSessionFactoryBuilder.buid方法创建SqlSessionFactory.

获取SqlSession

获取Mapper的接口

从mapper接口文件中获取业务数据.

调用xml文件的Sql语句实现数据获取.

mybatis自动封装为对象返回 交给用户处理.

2.4 简化mybatis操作

注解: @BeforeEach 在执行@Test注解之前执行.

2.5 Mybatis的参数封装

1. 封装为实体对象 user对象

2. 更为常用的方式 Map集合

3. 如果传递的数据有多个,则可以使用注解@Param("sex") String sex 封装为Map.

2.6 #号 $符用法

使用#{} 获取数据时,默认有预编译的效果.防止sql注入攻击.

mybatis使用#{}获取数据时,默认为数据添加一对""号.

当以字段名称为参数时,一般使用${},但是这样的sql慎用. 可能出现sql注入攻击问题.

小结: 一般条件下能用#{}号,不用${}

1

2.7 mybatis转义字符

xml文件中的转义字符.

> > 大于

&lt; < 小于

&amp; & 号

说明:如果sql中有大量的转义字符 建议使用转义标签体

语法: <![CDATA[ xxx内容 报文 ]]>

2.8 Mybatis集合写法

array

list

map

<!--

需求: 批量删除多个数据

难点: 如果使用#{集合}获取的是集合对象的整体.删除无效.

思路: 将数组拆分为单个数据. 可以通过遍历的方式操作

语法: mybatis为了参数取值方便,特意封装了遍历的标签 foreach

关于标签参数说明:

<foreach collection=""></foreach>

1.如果传递的参数是数组, 则collection="array"

2.如果传递的参数是list集合, 则collection="list"

3.如果传递的参数是Map集合, 则collection="map中的key"

标签属性说明:

1.collection 集合的名称

3.open 循环的开始标签

4.close 循环的结束标签

5.index 循环遍历下标 一般不用

6.separator 循环遍历的分割

2.9 mybatis特殊查询

模糊查询: “%” #{属性}"%" 或者 xxxx.setName("%精%")

2.10 Mybatis优化

1.指定具体的类型的别名

2.别名包

3.别名注解 一般不常用

2.11 动态Sql

if-where where去除多余的and / or

set标签 去除多余的,号

choose when otherwise 用法上和java中的switch类型.

2.12 resultMap用法

当结果集中的字段与属性名不一致时使用. 可以使用驼峰映射规则优化.

2.13 关联关系

2.13.1 一对一

逻辑: 一个员工对应一个部门

表示: 在对象中封装其他对象 对一 封装单个对象 对多封装List集合

一对一映射标签:

2.13.2 一对多

2.14 mybatis中的缓存机制

Mybatis的缓存
Mybatis中自身提供了缓存机制,可以极大的提高查询效率.
Mybatis系统中默认定义了两级缓存: 一级缓存 和 二级缓存
Mybatis默认条件下只开启一级缓存, 一级缓存是sqlSession级别的, 在同一个sqlSession中查询数据可以共享数据.
二级缓存默认开启. 二级缓存是SqlSessionFactory级别. 同一个工厂创建多个sqlSession共享数据.
Mybatis 也提供了第三方Cache接口,整合第三方缓存(了解)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值