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

news2024/11/27 4:19:28

目录

一、参数两种类型:

二、传参的几种方法:

三、提交事务

四、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">
          SELECT
          d.id,
          d.num,
          s.num snum,
          s.name,
          a.account
        FROM
          dorm d
          LEFT JOIN admin a
            ON d.adminid = a.id
          LEFT JOIN student s
            ON s.dormid = d.id
        WHERE d.id = #{id}
    </select>
    <select id="findDorms" resultMap="dormMap">
         SELECT
          d.id,
          d.num,
          s.num snum,
          s.name,
          a.account
        FROM
          dorm d
          LEFT JOIN admin a
            ON d.adminid = a.id
          LEFT JOIN student s
            ON 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.coloradmin.cn/o/764376.html

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

相关文章

getattr, __getattr__, __getattribute__和__get__区别

一、getattr() 和另外三个方法都是魔法函数不同的是&#xff0c;getattr()是python内置的一个函数&#xff0c;它可以用来获取对象的属性和方法。例子如下: class A():a 5def __init__(self, x):self.x xdef hello(self):return hello funca A(10)print(getattr(a, x)) #…

2023 双非本科三个月互联网找实习心路历程

双非本科三个月互联网找实习心路历程 1、实习面试准备2、面试日历&#xff08;1&#xff09;开发投递&#xff08;2&#xff09;线下宣讲&#xff08;3&#xff09;转投测试&#xff0c;机会多多 3、同窗现状4、货拉拉 offer 的故事5、我的闲言6、我的收获(1&#xff09;勇气&a…

2.5 线性表的建表

1. 顺序表建表 #include <iostream>/// <summary> /// 数组最大长度 /// </summary> const int MAX_SIZE 10;/// <summary> /// 顺序表建表 /// </summary> /// <param name"arr">数组</param> /// <param name"…

万达商管IPO:看似轻舟已过万重山,实则负重前行?

近日&#xff0c;继万达商管债券发行计划被终止、证监会质疑万达商场销售数据真实性、珠海万达商管的股权被法院冻结后又解冻&#xff0c;万达商管又遇“水逆”——惠誉发布报告下调万达商管的评级&#xff0c;并认为珠海万达商管可能无法在2023年底前完成上市。 纷至沓来的负…

什么是链路跟踪 Skywarking

什么是链路跟踪 Skywarking 链路跟踪&#xff08;Link Tracing&#xff09;是一种用于追踪分布式系统中请求路径和性能的技术。SkyWalking 是一个开源的 APM&#xff08;Application Performance Monitoring&#xff09;系统&#xff0c;它提供了链路跟踪功能。 SkyWalking 的…

ceph----应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1.1 服务端操作1.2 客户端操作 二、创建 Ceph 块存储系统 RBD 接口三、OSD 故障模拟与恢复 一、创建 CephFS 文件系统 MDS 接口 1.1 服务端操作 1&#xff09;在管理节点创建 mds 服务 cd /etc/ceph ceph-deploy mds create node0…

Java编程-基本排序算法

冒泡排序 图解 &#xff08;注&#xff1a;图片来源网络&#xff09; Java代码 package suanfa_Ja;import org.apache.hadoop.security.SaslOutputStream;// 基本排序算法&#xff0c;冒泡排序 时间复杂度 O(n^2) 空间复杂度O(1) public class BubbleSort {public static v…

blender 建模马拉松

效果展示 蘑菇模型创建&#xff1a; 创建蘑菇头 shift A &#xff0c;创建立方体&#xff1b; 右下工具栏添加细分修改器&#xff08;视图层级&#xff1a;2&#xff0c;渲染&#xff1a;2&#xff09;&#xff1b;tab键进入编辑模式&#xff0c;alt z 进入透显模式&…

Python项目依赖项管理的秘诀:requirements.txt文件

一、背景 公司里面很多时候我们开发的Python项目都不只是我们一个人使用&#xff0c;而是整体团队使用。Python项目需要在别人的电脑环境中运行&#xff0c;则需要别人的电脑环境中也要安装上我们项目需要的python库。那么项目中到底用到了哪些Python库&#xff0c;每个库具体…

12.matlab数据分析——多项式的建立 (matlab程序)

1.简述 多项式及其建立 在运算中我们经常接触到的就是所谓的多项式&#xff0c;比如很常见的一个多项式&#xff1a; 这里我们就说这是一个x的多项式&#xff0c;最高次是2次&#xff0c;常数项是3&#xff0c;二次项的系数是1&#xff0c;一次项的系数是2&#xff0c;相信这些…

流程管理是什么?“流程管理”到底管什么?

流程管理&#xff08;process management&#xff09;&#xff0c;是一种以规范化的构造端到端的卓越业务流程为中心&#xff0c;以持续的提高组织业务绩效为目的的系统化方法。 任正非曾在一次访谈时说到&#xff1a; “权力要放进流程中&#xff0c;流程才有权力&#xff0c…

【Django学习】(十四)自定义action_router

之前我们的视图类可以继承GenericViewSet或者ModelViewSet&#xff0c;我们不用再自定义通用的action方法&#xff0c;但是有时候我们需要自定义action&#xff0c;我们该如何设计呢&#xff1f; 自定义action 1、手写视图逻辑 1.1、先在视图集里自定义action方法&#xff0…

LeetCode 790. 多米诺和托米诺平铺 - 二维空间的动态规划

多米诺和托米诺平铺 中等 304 相关企业 有两种形状的瓷砖&#xff1a;一种是 2 x 1 的多米诺形&#xff0c;另一种是形如 “L” 的托米诺形。两种形状都可以旋转。 给定整数 n &#xff0c;返回可以平铺 2 x n 的面板的方法的数量。返回对 109 7 取模 的值。 平铺指的是每个…

icp许可证 办理流程(icp资质申请条件)

icp许可证 办理流程(icp资质申请条件)是什么&#xff1f; ICP经营许可证是可以线上无忧办理的&#xff0c;包下证&#xff0c;流程也很简单&#xff0c;只需要你提供企业营业执照、法人身份证这些基础材料就可以。加急10-20工作日拿证&#xff0c;普通20-60工作日拿证。 在了解…

使用Vue的插件clipboard使用复制功能

1.安装clipboard插件 npm install clipboard 2.使用 clipboard <template><div style"margin-right: auto;margin-left: auto; 800px"><el-table :data"list"><el-table-column label"搜索引擎" prop"name"&g…

Python迭代器与生成器

文章目录 迭代器创建迭代器StopIteration 生成器 迭代器 访问集合元素的一种方式&#xff0c;可以记住遍历的位置的对象 从集合的第一个元素开始&#xff0c;直到所有的元素被访问完结束&#xff0c;迭代器只能往前不会后退 iter()&#xff0c;创建迭代器对象 iter(object, …

docker中配置mysql主从分离

目录 前言 1、下载mysql安装包 2、mysql 读写分离 3、docker安装三台mysql服务 4、修改主从配置文件 5、重启mysql 6、配置主库 7、配置从库创建同步账户 7.1、进入MySQL01和MySQL02和mysql03服务器新增MySQL用户user 密码root 用于同步账号和密码&#xff1b; 7.2、验…

说好的见框就插呢?

说好的见框就插呢&#xff1f; 背景一句话讲原理速挖XSS 背景 每一个学安全的&#xff0c;都听说过一句话&#xff0c;挖XSS就是见框就插&#xff0c;不得不说这个方法很有用&#xff0c;但是经常遇到插不进去的情况。今天浅聊一下XSS漏洞 一句话讲原理 XSS原理和注入很像&…

SpringCloud Alibaba——Ribbon的属性配置和类配置优先级

目录 一、Ribbon的属性配置和类配置哪个优先级高二、Ribbon的属性配置和类配置优先级源码解读 一、Ribbon的属性配置和类配置哪个优先级高 类配置优先级高 二、Ribbon的属性配置和类配置优先级源码解读 通过RibbonClientConfiguration类中的ribbonRule方法可知&#xff0c;优…

实现将redis中的所有数据备份到数据库表中

实现将redis中的所有数据备份到数据库表中 /*** 将redis中的数据同步到mysql中*/Overridepublic void saveMysqlForRedis(){Jedis jedis new Jedis("127.0.0.1", 6379);//System.out.println(jedis.ping());Set keys jedis.keys("*");//列出所有的keyI…