当前位置: 首页 > news >正文

框架--Mybatis 2

目录

一.结果处理

1.#{} 和${}区别

区别:

(1)底层实现不同

(2)使用场景不同

2.特殊处理定义resultMap

二.多表关联处理结果集

1.多表查询

1)准备工作

2)根据id查一个学生

(1)关联查询方式1:

(2)关联查询方式2:嵌套查询

3)查多个学生

(1)根据专业id查询学生信息

(2)查询每个专业下的学生

①关联查询方式1:

②关联查询方式2:分两次查询

2.注解方式

三.Mybatis 动态SQL

1.if元素

2. 元素

3.trim 元素

4.Choose 元素

5.Set 元素

修改老师表中部分信息

6.foreach 元素

批量删除表中信息

动态传递列名


一.结果处理

1.#{} 和${}区别

${}代码案例:根据密码降序排列

(1)AdminDao中:

(2)AdminMapper中:

(3)test:

区别:

(1)底层实现不同

#{ } 采用预编译方法,防止sql注入更加安全

${ } 采用字符串拼接,直接将值拼接到sql中

(2)使用场景不同

#{ } 一般用于向sql中的列传递

${ } 一般用于向sql动态传递列名   例如:排序时order by后面的列名是可以改变的

2.特殊处理定义resultMap

<resultMap id="adminResultMap" type="Admin">
  <id column="id" property="id"/>
  <result property="account" column="account" />
  <result property="password" column="password" />
</resultMap>
(1). resutlMap 的 id 属性是resutlMap的唯一标识,本例中定义为“adminResultMap”
(2). resutlMap 的 type 属性是映射的POJO类型
(3). id 标签映射主键,result标签映射非主键
(4). property 设置对象属性名称,column映射查询结果的列名称

案例代码:

①AdminDao:

④结果:

⑤总结:此案例是因为列名(adminid)与属性名(id)不同导致无法获得id,引入resultMap。多用于多表查询。

二.多表关联处理结果集

1.多表查询

1)准备工作

(1)创建表格

(2)创建模型类

(3)创建StudentMapper和StudentDao

(4)配置StudentMapper地址

2)根据id查一个学生

以下两种方式掌握一种即可

(1)关联查询方式1:

直接通过表关联查询出我们需要的数据

获取信息:

System.out.println(student.getId());
System.out.println(student.getName());
System.out.println(student.getMajor().getName());

(2)关联查询方式2:嵌套查询

先查询主表(学生表),通过主表中的外键,再通过外键查询关联的另一个表中数据

3)查多个学生

(1)根据专业id查询学生信息

名字对应关系:

(2)查询每个专业下的学生

①关联查询方式1:

查询所有专业,以及各专业下学生的信息

②关联查询方式2:分两次查询

分页采用这种方法

2.注解方式

@Insert : 插入sql , 和xml insert sql语法完全一样

@Select : 查询sql, 和xmlselect sql语法完全一样

@Update : 更新sql, 和xmlupdatesql语法完全一样

@Delete : 删除sql, 和xmldelete sql语法完全一样

@Param : 入参

@Results : 设置结果集合

@Result : 结果

三.Mybatis 动态SQL

动态SQL,可以在sql中添加逻辑判断。

思考:如果上面的这条sql语句中没有默认的 type=1会是什么样子的。

1.if元素

test属性条件成立,执行if标签体,不成立就不执行

查询条件:

2.<where>元素

where标签,当where标签中if语句有条件成立时,就会动态添加where关键字,还可以删除where后面紧跟着的关键字 ,例如and、or

3.trim 元素

trim 当条件判断成立时,可以自定义前缀关键字和后缀关键字

4.Choose 元素

5.Set 元素

Set 元素可以把最后一个逗号去掉

修改老师表中部分信息

另一种方法:

6.foreach 元素

批量删除表中信息

动态传递列名

相关文章:

  • YOLOv12推理详解及部署实现
  • 图解MySQL【日志】——Undo Log
  • 案例-18.文件上传-阿里云OSS-集成
  • 0081.基于springboot+uni-app的垃圾分类小程序+论文
  • PAT乙级( 1018 锤子剪刀布)C语言超详细解析
  • CV -- YOLOv8 图像分割(GPU环境)
  • 【再谈设计模式】迭代器模式~遍历集合元素的利器
  • 数据链路层分析
  • PHP 安全与加密:守护 Web 应用的基石
  • 【C++】类与对象全面剖析(尾卷)(构造深化、类型转换、static成员特性及内部类与匿名对象)
  • Linksys WRT54G路由器溢出漏洞分析–运行环境修复
  • 业务流程中的基准测试 (Benchmarking in Business Processes)介绍
  • 树(数据结构·)
  • 【数据结构初阶第十二节】设计循环队列
  • 在WPF中实现窗口拖拽功能:打造自定义交互体验
  • 管道的学习
  • 当一个后端下载了一个VUE开源项目,怎么开始着手玩一下
  • 【DeepSeek服务器部署全攻略】Linux服务器部署DeepSeek R1模型、实现API调用、搭建Web页面以及专属知识库
  • git 操作 已经 commit 但是没有 push 怎么办
  • 国产编辑器EverEdit - 独门暗器:自动监视剪贴板内容
  • 夜读丨什么样的前程值得把春天错过
  • 就规范涉企行政执法专项行动有关问题,司法部发布解答
  • 深圳南澳码头工程环评将再次举行听证会,项目与珊瑚最近距离仅80米
  • 舱位已排到月底,跨境电商忙补货!美线订单大增面临爆舱,6月运价或翻倍
  • 呼吸医学专家杜晓华博士逝世,终年50岁
  • 哪种“网红减肥法”比较靠谱?医学专家和运动专家共同解答