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简化原理
MyBatis快速入门
查询user表中所有数据
步骤:
1.创建user表,添加数据
2.创建模块,导入坐标
3.编写MyBatis核心配置文件->替换连接信息解决硬编码问题
4.编写SQL映射文件->统一管理sq语句,解决硬编码问题
5.编码
1.定义POJO类
2.加载核心配置文件,获取SqlSessionFactory对象
3.获取SqlSession对象,执行SQL语句
4.释放资源
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核心配置文件
配置文件完成增删改查
要完成的功能列表清单:
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
。。。
- 作者:lveMonsi
- 链接:https://blog.lvems.top/article/2308282
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。