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

相关推荐
用户6279947182625 分钟前
南大通用GBase 8c分布式版本gha_ctl 命令-HI参数详解
数据库
斯汤雷14 分钟前
Matlab绘图案例,设置图片大小,坐标轴比例为黄金比
数据库·人工智能·算法·matlab·信息可视化
腥臭腐朽的日子熠熠生辉18 分钟前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian20 分钟前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
SQLplusDB21 分钟前
Oracle 23ai Vector Search 系列之3 集成嵌入生成模型(Embedding Model)到数据库示例,以及常见错误
数据库·oracle·embedding
杉之26 分钟前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
喝醉酒的小白41 分钟前
SQL Server 可用性组自动种子设定失败问题
数据库
圈圈编码1 小时前
Spring Task 定时任务
java·前端·spring
chem41111 小时前
Conmon lisp Demo
服务器·数据库·lisp
俏布斯1 小时前
算法日常记录
java·算法·leetcode