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》 表示多

相关推荐
克里斯蒂亚诺更新7 分钟前
win下如何将redis自启动
数据库·redis·缓存
SimonKing10 分钟前
AI逆向实战:一个壁纸网站被我5分钟摸透了,你也能
java·后端·程序员
青禾83711 分钟前
MySQL 数据库完全指南:DDL、DML、DCL 与用户权限管理
数据库·oracle
天云数据12 分钟前
从“LLM+工具”到Harness 工程:Lilian Weng新文的技术拆解,与一个生产级参考实现
java·前端·网络
tachibana214 分钟前
大语言模型基础
数据库·人工智能·语言模型·自然语言处理·大模型·llm
小王C语言16 分钟前
MySQL 事务:事务自动提交、查看/修改事务隔离级别、读未提交(RU)、读提交(RC)、可重复读(RR)、串行化
数据库·mysql
yu俞娥宝16 分钟前
AI Agent可观测性:破解多步推理黑盒
数据库
TDengine (老段)17 分钟前
TDengine 应用案例 — IoT 设备监控
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
三84418 分钟前
WordPress SQL 注入漏洞分析:从 author__not_in 参数到 REST API 全链路
linux·前端·数据库
ryan_99621 分钟前
生产环境向量检索数据库选型:Elasticsearch、Qdrant、Milvus 与 Chroma
数据库·elasticsearch·milvus·向量数据库·chroma·qdrant