🗒️MyBatis学习笔记
00 分钟
2023-8-28
2023-12-9
type
status
date
slug
summary
tags
category
icon
password

MyBatis

什么是MyBatis?

MyBatis是一款优秀的持久层框架,用于简化JDBC开发
MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache software
foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github

持久层

负责将数据到保存到数据库的那一层代码
JavaEE三层架构:表现层、业务层、持久层

框架

框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
在框架的基础之上构建软件编写更加高效、规范、通用、可扩展

MyBatis简化原理

notion image

MyBatis快速入门

查询user表中所有数据
步骤:
1.创建user表,添加数据
2.创建模块,导入坐标
3.编写MyBatis核心配置文件->替换连接信息解决硬编码问题
notion image
4.编写SQL映射文件->统一管理sq语句,解决硬编码问题
5.编码
1.定义POJO类
2.加载核心配置文件,获取SqlSessionFactory对象
3.获取SqlSession对象,执行SQL语句
4.释放资源
notion image

Mapper代理开发

目的
解决原生方式中的硬编码
简化后期执行SQL
使用Mapper代理方式完成入门案例
步骤:
1.定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
2.设置SQL映射文件的namespace)属性为Mapper接口全限定名
3.在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
4.编码
1.通过SqlSession的getMapper7方法获取Mapper接口的代理对象
2.调用对应方法完成sq的执行
细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载

MyBatis核心配置文件

notion image

配置文件完成增删改查

要完成的功能列表清单:
1.查询
查询所有数据
查看详情
条件查询
2.添加
3.修改
修改全部字段
修改动态字段
4.删除
删除一个
批量删除
准备环境
数据库表tb brand
实体类Brand
测试用例
安装MyBatisX插件

查询-查询所有数据

1.编写接口方法
参数:无 结果:List<Brand>
2.编写SQL语句
3.执行方法,测试
MyBatis完成操作需要几步?
三步:编写接口方法->编写SQL->执行方法
实体类属性名和数据库表列名不一致,不能自动封装数据
1)起别名:在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样
  • 可以定义<sq>片段,提升复用性
2)resultMap:定义<resultMap>完成不一致的属性名和列名的映射

查看详情

1.编写接口方法:Mapper接口
参数:id 结果:Brand
2.编写SQL语句:SQL映射文件
3.执行方法,测试
1.参数占位符: 1)#{}:执行SQL时,会将#{}占位符替换为?,将来自动设置参数值 2)${}:拼SQL。会存在SQL注入问题 3.使用时机: *参数传递,都使用#{} *如果要对表名、列名进行动态设置,只能使用${}进行sql拼接。 2.parameterType: *用于设置参数类型,该参数可以省略 3.SQL语句中特殊字符处理: *转义字符 *<I[CDATA[内容]>:CD然后Tab补全

条件查询

多条件查询

1.编写接口方法:Mapperf接口
参数:所有查询条件
结果:List<Brand>
2.编写SQL语句:SQL映射文件
3.执行方法,测试
SQL语句设置多个参数有几种方式? 1)散装参数:需要使用@Param("SQL中的参数占位符名称") 2)实体类封装参数 *只需要保证SQL中的参数名和实体类属性名对应上,即可设置成功 3)map集合 *只需要保证SQL中的参数名和map集合的键的名称对应上,即可设置成功

多条件-动态条件查询

SQL语句会随着用户的输入或外部条件的变化而变化,我们称为动态SQL
MyBatis对动态SQL有很强大的支撑:
if choose (when,otherwise) trim (where,set) foreach
动态SQL if:用于判断参数是否有值,使用test属性进行条件判断 *存在的问题:第一个条件不需要逻辑运算符 *解决方案: 1)使用恒等式让所有条件格式都一样 2)<where>标签替换where关键字 练习 查询-单条件-动态条件查询 从多个条件中选择一个 choose(when,otherwise):选择,类似于Java中的switch语句

添加-主键返回

在数据添加成功后,需要获取插入数据库数据的主键
比如:添加订单和订单项 1.添加订单 2.添加订单项,订单项中需要设置所属订单的d

注解完成增删改查

动态SQL

。。。
 

评论
Loading...