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

相关推荐
daqinzl几秒前
java获取机器ip、mac
java·mac·ip
激流丶16 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue20 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
时差95335 分钟前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
让学习成为一种生活方式37 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
晨曦_子画42 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
秋意钟1 小时前
MySQL日期类型选择建议
数据库·mysql
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
Heavydrink1 小时前
HTTP动词与状态码
java
ktkiko111 小时前
Java中的远程方法调用——RPC详解
java·开发语言·rpc