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

框架--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 元素

批量删除表中信息

动态传递列名


http://www.kler.cn/a/553002.html

相关文章:

  • 第三方库XLSX: 前端上传excel文件,并对excel文件内容做校验。
  • ERP对制造业务有何价值?
  • No.39 蓝队 | 网络安全实战笔记:系统加固与资产梳理
  • Spring框架详解(一)
  • DeepSeek私有化部署3:openEuler 24.03-LTS-SP1国产化操作系统安装nVidia驱动
  • 纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型
  • Windows逆向工程入门之堆栈回溯
  • 关于uniApp的面试题及其答案解析
  • Python在网络安全中的应用 python与网络安全
  • 萌新学 Python 之 for 循环语句
  • 设置SCP无需输入密码
  • Linux下ioctl的应用
  • 极限网关可视化——Elasticsearch 请求流量分析实战
  • docker安装kafka,并通过springboot快速集成kafka
  • 每日一题之喜糖摆放
  • 图片粘贴上传实现
  • 深入探讨优先队列:原理、实现与应用
  • 4.6 模型训练基类Trainer:Hugging Face工业级训练引擎深度剖析
  • 【0407】Postgres内核 Condition variables (ConditionVariable)设计机制 ①
  • Linux基础25-C语言之分支结构Ⅱ【入门级】