Mybatis相关知识点

传统开发模式

JDBC 操作数据库弊端:

1.SQL语句自己手写,访问不同的表代码有雷同,枯燥

2.必须操作Connection、Statement ResultSet[为了实体封装]代码

3.SQL语句实际中很容易发生改变,代码与SQL语句耦合死

4.影响系统性能【用时创建、用后释放,Connection、Statement需要进行资源释放】

5.需要手动将查询出来的结果映射到实体中去

Mybatis相应解决措施:

1.将sql语句抽取到配置文件中

2.提供了一个SqlSesssion对象,内部封装了对JDBC的繁琐操作

3.引入数据源的概念,事先实例化数据源,初始化部分连接资源,用时去哪,用完放回

4.使用orm的思想解决了实体和数据库之间的映射关系

优点:使开发者不用关注繁杂的JDBC操作,专注于SQL代码本身

引入步骤

导入数据库驱动

导入mybatis驱动

创建mapper 文件(约束头、namespace resulteType)

编写核心配置文件 sqlMapConfig(核心文件约束头)

1.配置数据源环境

  1. 加载映射文件

<mappers>

<mapper resource = "">

</mappers>

SqlSession

概述:Mybatis中非常强大的类,里面有所有执行语句、提交回滚事务、获取映射器实例的方法

执行SqlSession的对象,内部封装了JDBC的繁琐操作

1.根据Resources对象获取核心配置文件

new SqlSessionFactoryBuilder().build(resourceAsStream )

2获取SqlSessionFactory对象,根据其获取SqlSession对象【执行sql语句的对象】

SqlSession对象是数据库操作的核心对象,也需要进行资源释放

Mybatis默认是事务不提交的,对表有影响操作需要用到事务

// mybatis 提交事务方法

sqlSession.commit()

sqlSession.close()

注:也可以创建一可以进行自动提交事务的sqlSession对象

SqlMapConfig重点配置

properties属性:加载外部properties文件

typeAliases:设置类型别名,设置后可以直接使用类的大小写替代全类名,可以通过包扫描的方式,将一个包下的所有类都配成实例

environments 重点

mappers 中 包含mapper,加载映射配置

mapper 加载方式有如下几种

1.使用相对于类路径的资源引用

2.url

3.映射器接口实现类的完全限定类名

  1. 包内的类

plugins 重点

Properties标签:

数据源的相关配置信息单独抽取成一个properties文件

<properties resource = "jdbc.properties" > </properties>

约束头作用

1.约束标签内容

  1. 起提示作用

别名

Integer ------》可以使用int代替

int 可以使用_int进行替代

动态SQL

根据相关条件进行查询时,标签体内为空,执行相关代码

<where > </where> 套在if外面 相当与where 1 = 1;

<if test = " ">

</If>

where 子标签有if 和forEach

<foreach collection = "list" open = "id in (" close = ")" item = "id" close separator> </foreach>

一对一,一对多,多对一的解决方案

MyBatis中在mapper配置文件中,将sql语句的返回值改为resultMap,并在Mapper中配置resultMap,注意Mybatis对常见的数据类型提供了映射,注意其大小写问题

resultMapd相关子标签

《association》 子标签 表示1

《collection》 表示多

相关推荐
小吴编程之路4 小时前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子4 小时前
MySQL集群技术
数据库·mysql
HalvmånEver4 小时前
7.高并发内存池大页内存申请释放以及使用定长内存池脱离new
java·spring boot·spring
凤山老林4 小时前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发4 小时前
Linux与数据库进阶
数据库
与衫4 小时前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫5 小时前
Redis桌面客户端
数据库·redis·缓存
oradh5 小时前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
赶路人儿5 小时前
UTC时间和时间戳介绍
java·开发语言
dreamread5 小时前
【SpringBoot整合系列】SpringBoot3.x整合Swagger
java·spring boot·后端