Mybatis:传参+提交事务(自动or手动)+sql多表关联查询(两种方法)

目录

一、参数两种类型:

二、传参的几种方法:

三、提交事务

四、sql多表关联查询(两种方法)


一、参数两种类型:

1.#{参数}:预编译方式,更安全,只用于向sql中传值;

select * from  admin where account=#{account} and password=#{password}

2.${参数}:将参数直接拼接到sql中 ,主要用来动态的向sql中传列名。

select  * from admin order by ${colum}

二、传参的几种方法:

1.基本类型不需要做任何处理;

2.多个参数使用:@Param("引用名")绑定;
  
3.传多个参数,使用类,传参使用属性名;
 
4.非基本类型需要@Param("colum") 绑定。

三、提交事务

由于mybatis默认是关闭事务自动提交的:

1.手动提交: 

如果进行了数据库的insert、update、delete操作,修改了数据库,必须必须调用sqlSession.commit()方法,手动提交。

2.自动提交:

将openSession方法中参数值改为true——sessionFactory.openSession(true);

四、sql多表关联查询(两种方法)

有student学生信息表、dorm宿舍信息表、admin管理员信息表,现已查询每个宿舍信息以及每个宿舍所住的学生为例:

相关类:

 

 

 表信息:

admin表

 dorm表

 

 student表

 1.sql查询语句已关联表

        将需要的数据统一用一条sql语句关联表查询,再通过反射存储到相应的类中,由于有一对多的查询(一个宿舍有多个学生)结果,需要使用collection标签。

 <resultMap id="dormMap" type="Dorm"><id column="id" property="id"></id><result column="num" property="dormNum"></result><association property="admin" javaType="Admin"><result column="account" property="account"></result></association><collection property="students" javaType="list" ofType="Student"><result column="snum" property="num"></result><result column="name" property="name"></result></collection></resultMap><select id="findDormById" resultType="com.ffyc.mybatispro.model.Dorm" resultMap="dormMap">SELECTd.id,d.num,s.num snum,s.name,a.accountFROMdorm dLEFT JOIN admin aON d.adminid = a.idLEFT JOIN student sON s.dormid = d.idWHERE d.id = #{id}</select><select id="findDorms" resultMap="dormMap">SELECTd.id,d.num,s.num snum,s.name,a.accountFROMdorm dLEFT JOIN admin aON d.adminid = a.idLEFT JOIN student sON s.dormid = d.id</select>

2.分步查询

多表关联查询可以分解为多个sql语句逐次查询出需要数据,每次查出的结果可以作为下次查询的条件。

    <resultMap id="dormMap1" type="Dorm"><id column="id" property="id"></id><result column="num" property="dormNum"></result><association property="admin" javaType="Admin" column="adminid" select="findAdminByid1"></association><collection property="students" javaType="list" ofType="student" column="id" select="findStudentByDormid"></collection></resultMap><select id="findDorms1" resultMap="dormMap1">select id,num,adminid from dorm</select><select id="findAdminByid1" resultType="Admin">select account from admin where id = #{adminid}</select><select id="findStudentByDormid" resultType="Student">select name,num from student where dormid=#{id}</select>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unifying Large Language Models and Knowledge Graphs: A Roadmap

本文依旧是LLM系列的相关文章&#xff0c;LLM与知识图谱结合&#xff0c;针对《Unifying Large Language Models and Knowledge Graphs: A Roadmap》的翻译。 统一大语言模型与知识图谱&#xff1a;路线图 摘要1 引言2 背景2.1 大语言模型&#xff08;LLMs&#xff09;2.1.1 仅…

只需一个提示词解除GPT-4的字符限制!

ChatGPT的内存有限,GPT-3.5-turbo的限制为4897个令牌,而GPT-4的最大限制为8192。如果您在使用GPT-4进行聊天时超过8192个令牌(约6827个单词),它就会开始遗忘。我想出了一种新的技巧,可以轻松将对话扩展10倍。 这种技巧不会将对话中的每个字都保存到内存中。当您去开会时,会有人…

Windows - 如何判断一个DLL已经注册

判断一个DLL是否注册&#xff1a; reg query HKLM\SOFTWARE\Classes\CLSID /s /f "aaa.dll" 如果返回0个匹配&#xff0c;则没有注册&#xff0c;有匹配&#xff0c;则注册过了。 注册一个DLL regsvr32 aaa.dll 取消注册一个DLL regsvr32 /u aaa.dll通过上面两…

如何解除“无法完成操作 因为文件包含病毒或潜在垃圾软件”

当运行软件遇到“无法完成操作 因为文件包含病毒或潜在垃圾软件”时&#xff0c;如何解决&#xff1f;如果确认此软件不是病毒软件&#xff0c;那么可以按照如下方法进行解决&#xff1a; 1&#xff1a;关闭防火墙 控制面板-系统和安全-Windows Defender防火墙-自定义设置&am…

分布式运用存储系统Ceph

一、ceph的相关知识 1.ceph介绍与简介 Ceph是一个开源的分布式存储解决方案&#xff0c;旨在提供可扩展性、高性能和强大的数据可靠性。它采用了一种分布式对象存储架构&#xff0c;能够同时提供块存储和文件存储的功能。 Ceph使用C语言开发&#xff0c;是一个开放、自我修复和…

前端如何使用WebSocket发送消息

前端如何使用WebSocket发送消息 WebSocket是一种在Web应用程序中实现实时双向通信的协议。相比传统的HTTP协议&#xff0c;WebSocket提供了更高效、更快速的双向通信方式&#xff0c;可以在客户端和服务器之间实时交换数据。本文将详细介绍前端如何使用WebSocket发送消息&…

MySQL数据表高级操作

一、克隆/复制数据表二、清空表&#xff0c;删除表内的所有数据删除小结 三、创建临时表四、MySQL中6种常见的约束1、外键的定义2、创建外键约束作用3、创建主表test44、创建从表test55、为主表test4添加一个主键约束。主键名建议以"PK_”开头。6、为从表test5表添加外键&…

数据结构与算法——顺序表(顺序存储结构)及初始化详解

顺序表&#xff0c;全名顺序存储结构&#xff0c;是线性表的一种。通过《什么是线性表》一节的学习我们知道&#xff0c;线性表用于存储逻辑关系为“一对一”的数据&#xff0c;顺序表自然也不例外。 不仅如此&#xff0c;顺序表对数据的物理存储结构也有要求。顺序表存储数据…

Java包装类的自动装箱拆箱使用以及详解

Java包装类的自动装箱拆箱使用以及详解 一、Java包装类简介&#xff1a;二、Java中的自动拆箱&#xff1a;三、Java中的自动装箱&#xff1a;四、自动拆箱和装箱的作用&#xff1a;1. 类型转换的便利性&#xff1a;2. 泛型的支持&#xff1a;3. 集合类的支持&#xff1a;4. 方法…

【论文阅读】TransCAM: Transformer Attention-based CAM Refinement for WSSS

分享一篇阅读的用于弱监督分割的论文 论文标题&#xff1a; TransCAM: Transformer Attention-based CAM Refinement for Weakly Supervised Semantic Segmentation 作者信息&#xff1a; 代码地址&#xff1a; https://github.com/liruiwen/TransCAM Abstract 大多数现有…

【React】- 组件生命周期连续渲染两次问题

最近在整理生命周期相关的知识内容&#xff0c;然后发现一个奇怪的现象&#xff0c;即组件的生命周期会运行2次&#xff01;经过确认不是代码问题&#xff0c;于是开始找度娘&#xff0c;终于找到其原因-React中的严格模式&#xff0c;在这里记录一下 一、问题重现 如图所示&a…

EMC学习笔记(十五)射频PCB的EMC设计(二)

射频PCB的EMC设计&#xff08;二&#xff09; 1.滤波1.1 电源和控制线的滤波1.2 频率合成器数据线、时钟线、使能线的滤波 2.接地2.1 接地分类2.2 大面积接地2.3 分组就近接地2.4 射频器件接地2.5 接地时应该注意的问题2.6 接地平面的分布 1.滤波 1.1 电源和控制线的滤波 随着…

Ubuntu切换内核

一、下载指定内核 1.1查看当前内核 使用uname -a 命令可知当前内核为5.4.0-149-generic&#xff0c;根据需要安装指定内核5.4.0-139-generic uname -a Linux adyonggan-u01 5.4.0-149-generic #156~18.04.1-Ubuntu SMP Wed Jan 25 15:56:22 UTC 2023 x86_64 x86_64 x86_64 GN…

人工智能自然语言处理:N-gram和TF-IDF模型详解

人工智能自然语言处理&#xff1a;N-gram和TF-IDF模型详解 1.N-gram 模型 N-Gram 是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为 N 的滑动窗口操作&#xff0c;形成了长度是 N 的字节片段序列。 每一个字节片段称为 gram&#xff0c;对所…

SpringBoot 整合redis + Aop防止重复提交 (简易)

1.redis的安装 redis下载 解压 安装 # wget http://download.redis.io/releases/redis-6.0.8.tar.gz # tar xzf redis-6.0.8.tar.gz # cd redis-6.0.8 # make 看一下就会有 进入redis-6.0.8下的src目录 [rootVM-16-8-centos redis]# cd redis-6.0.8 [rootVM-16-8-centos re…

HCIP——HCIA回顾及静态实验

HCIP HCIA一、知识回顾1、OSI七层参考模型&#xff1a;2、重要的几个协议报头格式 二、静态实验1、实验拓扑图2、实验要求3、实验思路4、实验步骤1、给接口划分IP地址以及配置环回地址2、交换机配置划分VLAN3、配置静态路由4、配置DHCP服务5、测试6、优化 HCIA 1、七层参考模型…

ng+php架构下websocket监听实例

系统架构&#xff1a;nginx服务器应用服务器数据库 通过websocket监听应用服务器的8090端口&#xff1b;前端js发送websocket请求到ng服务器&#xff1b;ng服务器转发请求到应用服务器的8090端口 1、php后端设置websocket监听 $_ip取应用服务器ip $_port为监听的端口 启动…

51单片机学习--独立按键控制LED

功能&#xff1a;按下K1时D1亮&#xff0c;松开时D1灭&#xff0c;P3_1对应K1 , P2_0对应D1 #include <REGX52.H>void main() {while(1) {if(P3_1 0) //按下K1{P2_0 0;}else{P2_0 1;}}} 按下按钮和松开按钮时会有抖动&#xff0c;所以需要用延时函数来避免抖动造成的…

短视频抖音账号矩阵系统源码开发分享

引用&#xff1a;MySQL数据库&#xff0c;NGINX&#xff0c;PHP7.4&#xff0c;MySQL5.7&#xff0c;redis 媒体组件 组件 描述 image 图片 图片。支持 JPG、PNG、SVG、WEBP、GIF 等格式。 video 视频 视频组件。相关 API 请参考 tt.createVideoContext。 开发背景&…

手机快充协议

高通:QC2.0、QC3.0、QC3.5、QC4.0、QC5.0、 FCP、SCP、AFC、SFCP、 MTKPE1.1/PE2.0/PE3.0、TYPEC、PD2.0、PD3.0/3.1、VOOC 支持 PD3.0/PD2.0 支持 QC3.0/QC2.0 支持 AFC 支持 FCP 支持 PE2.0/PE1.1 联发科的PE&#xff08;Pump Express&#xff09;/PE 支持 SFCP 在PP…