MyBatis的CRUD中的不同参数绑定查询

Mybatis CRUD实战:从配置到动态SQL与批量操作详解 ORM(对象关系映射)是Java后端开发中连接应用与数据库的核心技术,它通过将数据库表映射为Java对象,简化了数据持久化操作。其原理在于利用反射和元数据,在运行时自动处理SQL生成、参数绑定和结果集映射,从而提升开发效率并降低手写SQL的出错率。在众多ORM框架中,Mybatis以其半自动化的设计脱颖而出,它精准平衡了SQL的灵活控制与开发便捷性,尤其适用于需要精细优化SQL性能或处理复杂查询的场景。通过XML或注解配置SQL语句,开发者可以完全掌控数据库交互细节,同时利用其动态SQL、缓存机制等特性应对 阅读详情

com.by.pojo下的User类

package com.by.pojo;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

测试类

private SqlSession sqlSession;
    private InputStream inputStream;

    @Before
    public void init() throws IOException {
        //加载配置文件
        String resource = "mybatis-config.xml";
        inputStream = Resources.getResourceAsStream(resource);

        //创建SessionFactory
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //使用数据的会话实例
        sqlSession = sessionFactory.openSession();
    }
​
@After
    public void close() throws IOException {
        sqlSession.close();
        inputStream.close();
    }

​

单个参数传递绑定

在UserDao接口中:

User getUserById(Integer id);

在UserDao.xml中:

<!--    传递单个参数-->
    <select id="getUserById" parameterType="java.lang.Integer" resultType="com.by.pojo.User">
        select * from user where id=#{id};
    </select>

测试类:

@Test
    //传递单个参数有
    public void testgetUserById() throws IOException {
        //返回接口的代理类
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        User user = userDao.getUserById(43);
        System.out.println(user);
    }

序号参数传递绑定

在UserDao接口中:

//序号多个参数
    User getUser(Integer id, String username);

在UserDao.xml中:

<!--    序号传递多个参数-->
    <select id="getUser" resultType="com.by.pojo.User">
    select * from user where id=#{arg0} and username=#{arg1};
    select * from user where id=#{param1} and username=#{param2};
    </select>

测试类:

@Test
    //序号传递多个参数
    public void testgetUser() throws IOException {
        //返回接口的代理类
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        User user = userDao.getUser(43, "俞莲舟");
        System.out.println(user);
    }

注解参数传递绑定

在UserDao接口中:

//注解多个参数
    User getUser2(@Param("id") Integer id, @Param("username") String username);

在UserDao.xml中:

<!--    注解传递多个参数-->
    <select id="getUser2"  resultType="com.by.pojo.User">
        select * from user where id=#{id} and username=#{username};
    </select>

测试类:

@Test
    //注解传递多个参数
    public void testgetUser2() throws IOException {

        //返回接口的代理类
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        User user = userDao.getUser2(43, "俞莲舟");
        System.out.println(user);
    }

pojo(对象)参数传递绑定

在UserDao接口中:

//pojo参数
    User getUser3(User user);

在UserDao.xml中:

<!--    pojo传递多个参数-->
    <select id="getUser3" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">
        select * from user where id=#{id} and username=#{username};
    </select>

测试类:

@Test
    //pojo(对象)传递多个参数
    public void testgetUser3() throws IOException {
        //返回接口的代理类
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        User userParam = new User();
        userParam.setId(43);
        userParam.setUsername("俞莲舟");
        User user = userDao.getUser3(userParam);
        System.out.println(user);
    }

map参数传递绑定

在UserDao接口中:

//map参数
    User getUser4(Map<String, Object> map);

在UserDao.xml中:

</select>
    <!--    map传递多个参数-->
    <select id="getUser4" parameterType="java.util.Map" resultType="com.by.pojo.User">
        select * from user where id=#{id} and username=#{username};
    </select>

测试类:

@Test
    //map传递多个参数
    public void testgetUser4() throws IOException {
        //返回接口的代理类
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        HashMap<String, Object> map = new HashMap<>();
        map.put("id", 43);
        map.put("username", "俞莲舟");
        User user = userDao.getUser4(map);
        System.out.println(user);
    }

SCL3400-D01双轴高精度倾角计 简介 两轴高精度加速度计,提供两个模式。 ±30° with 10 Hz LPF ±90° with 40 Hz LPF Resolution up to 32768 LSB/g Ultra-low 0.0009°/√Hz noise density 这款传感器是替换之前村田的停产的模拟量系列的芯片,正在测试中,具体效果大伙可以评测。 一、引脚连接图 引脚图兼容SCL3300 二、SPI接口 1.SCL3300和SCL3400略有区别如下图 左边为SCL3... 阅读详情

相关推荐

谷歌浏览器崩溃排查:闪退、卡死、网页打不开的修复指南

浏览器多进程架构通过进程隔离、GPU加速和扩展沙箱提升网页渲染效率,但配置损坏、扩展冲突、显卡驱动异常或系统资源不足时,常会以闪退、卡死、白屏、内存占用飙升和能上微信却打不开网页等形式暴露。排查价值在于先分层定位系统、进程、配置扩展与网页内容,再用无痕模式、chrome://crashes、chrome://gpu和浏览器任务管理器收集证据,避免盲目重装。对办公、开发运维和日常维护场景,禁用扩展、关闭硬件加速、刷新DNS缓存、重置配置文件乃至干净重装,都是可复用的工程化处置手段。围绕谷歌浏览器崩溃的典型症状

weixin_34138056的博客 425

Mybatis传多个参数(三种解决方案)

第一种方案 DAO层的函数方法Public User selectUser(String name,String area); 对应的Mapper.xml<select id="selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{0} and user_area...

如果我爱自己我就会日出而坐,日落而息 2811

Python批量注册脚本开发详细

开发一个Python批量注册脚本需要考虑多个方面,包括目标网站的注册流程、验证码处理、请求发送、数据存储等。以下是一个详细的开发流程和代码示例,用于实现基本的批量注册功能。

nsp202505的博客 3345

Mybatis传入多个参数四种处理方式

Mybatis传入多个参数四种处理方式

m0_73414822的博客 3762

【联邦学习】联邦平均(FedAvg)_附pytorch代码实现

其他代码包括1)数据集划分;2)训练;3)保存结果;4)绘图都可在 https://github.com/kt4ngw/fedavg-pytorch 找到。如果您对文章有建议及指定,也欢迎您留言评论,作者定当虚心修正。

kt4ngw的博客 5104

【DRAM存储器五十六】LPDDR5介绍--WCK2CK Leveling和Read gate training

简述LPDDR5 WCK2CK leveling和read gate traning基本原理与操作步骤

highman110的博客 8787

Mybatis mapper文件下同一id 查询结果列不同问题

场景描述: 订单数据按天分表,正常情况下每一天的表结构都是一样的,表名命名格式order_yyyyMMdd。定义一个查询如下: &lt;select id="orderSelect" parameterClass="java.util.HashMap" resultClass="com.xxx"&gt; select * from order_$table_suffix$ w...

u013810373的专栏 1052

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1371

MyBatis进行CRUD查询操作时的数据绑定方法详解演示

MyBatis进行CRUD查询操作时的数据绑定方法详解演示

相关项目可以查看https://gitee.com/fan-pl或https://github.com/fpl1116 516

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3046

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

当前基于MQTT协议设计了一个实时图传系统,通过这个项目来演示,两个MQTT设备如何互相订阅,进行消息流转。 在阿里云服务器上创建2个设备,分为为设备A和设备B;设备A负责采集本地摄像头画面上传,设备B负责接收设备A上传的数据然后解析显示出来。在阿里云服务器上需要配置云产品流转,让设备A的数据上传后自动发送给设备B。这样就完成了视频画面数据的流转。不过因为阿里云的最大数据限制,每次最大发送10240字节的数据。

1万+

Mybatis的CRUD操作(增删改查操作)

查询: 标签:< select id="" resultType="" > 参数传递与获取: 方法有四: 序号参数绑定 //使用原生参数绑定 public User selectUserByIdAndPwd(Integer id , String pwd); <select id="selectUserByIdAndPwd" resultType="user"> SELECT * FROM t_users WHERE id = #{arg

小白的记录 186

什么是 SAP Fiori 的 Technical Catalog

笔者之前的文章曾经提到一个叫做本文介绍 Technical Catalog 这个概念在 SAP Fiori 技术体系中的作用。首先我们如何在系统里查看这个 Catalog SAP_BASIS_TCR_T 里面包含的内容呢?如果大家照着本文开头那篇文章里提到的步骤,那么在自己系统里会创建好名叫的 PFCG role.我们登录 ABAP 系统,启动事务码 PFCG,打开这个 role, 就能看到它。展开之后,发现它扮演着一个容器的角色,里面包含了很多 ABAP 对象。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 742

一起学习框架SSM之MyBatis(一)

Mybatis引言1.什么是框架2.什么是ORM框架3.使用JDBC完成ORM操作的缺点Mybatis框架1.概念2.下载构建Maven项目==Mybatis环境搭建==1.引入Mybatis依赖包2.创建Mybatis配置文件==mybatis开发步骤==1.定义实体类2.定义DAO接口3.编写Mapper.xml4.注册Mapper5.测试优化以及细节创建log4j配置文件1.pom.xml加入lo4j依赖2.创建并配置log4.properties==MyBatis的CRUD操作==1.查询1.12.

ozl520的博客 298

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MyBatis - XML CRUD & 其他查询

MyBatis XML 操作数据库 , #{} 与 ${}, 其他查询

2401_83595513的博客 2165

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MyBatis——MyBatis的CRUD(增删改查)

mybatis的增删改查

wan的博客 935

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MyBatis实现数据库的CRUD

本文主要讲解通过 MyBatis 框架实现数据库的 CRUD 操作。分别介绍了 C(create)、R(read)、U(update)、D(delete)的实现方式,包括使用的注解、SQL 语句、参数绑定、实体对象封装等,并通过测试方法展示了操作效果,强调 CRUD 是数据库基本且必备的技能。

Aishangyuwen的博客 1586

MyBatis CRUD操作终极指南 → MyBatis CRUD 操作详解(完整版手册)→ MyBatis CRUD 项目参考

《MyBatis CRUD操作完全手册》摘要: 本手册系统讲解MyBatis的增删改查操作,包含核心概念(SqlSessionFactory、Mapper映射)、四种基础操作(查询/插入/更新/删除)的完整写法和接口简写方式,重点覆盖动态SQL、参数传递、事务管理和性能优化。特别说明#{}与${}的安全差异,提供自增主键获取、批量操作、逻辑删除等实战方案,并附SpringBoot整合示例(含目录结构、实体类、Mapper接口/XML、Service层及事务控制)。注意事项强调SQL注入防护、条件限制避免全表

DeppBing的博客,全栈修炼记|记录一个开发者的进化轨迹 1304

Spring Boot整合MyBatis实现简单的CRUD

这篇文章主要针对java初学者,详细介绍如何创建一个基本的springboot项目来对数据库进行crud操作。

沐雨橙风ιε的博客 4487

MyBatis的CRUD操作-增删改查

MyBatis的CRUD操作 查询 标签:< select id="" resultType="" > 序号参数绑定 public interface UserDao { //使用原生参数绑定 public User selectUserByIdAndPwd(Integer id , String pwd); } <select id="selectUserByIdAndPwd" resultType="user"> SELECT * FROM t_user

qiuyu1998的博客 208

MyBaits——MyBatis的CRUD操作、配置文件参数详解: 别名配置,属性配置,查询结果映射、多参数处理的4种方式、 注解开发

一、MyBatis拓展 1、别名配置处理 Mapper.xml中的查询操作 <select id="getUserList" resultType="com.sunny.domain.User"> SELECT * FROM user; </select> <!-- #{id} 相当于在测试方法中selectOne传递过来...

Guizy 6851

MyBatis CRUD标签深度解析

在当今的软件开发领域,数据库操作是任何项目不可或缺的一部分。想象一下,一个程序员正坐在电脑前,面对着满屏的代码,眉头紧锁,手指在键盘上快速敲击。突然,他停下了手中的动作,双手抱胸,眼睛直勾勾地盯着屏幕,嘴里嘟囔着:“哟呵,这需求得去数据库里捞点数据出来。”以往,手动和数据库打交道,那可真是麻烦得很,各种连接配置、SQL语句,想想都头大。这种情况下,MyBatis的CRUD标签应运而生。CRUD是Create(创建)、Read(读取)、Update(更新)、Delete(删除)的缩写,是数据库操作中最基本的四

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 1186

MyBatis 从入门到精通:CRUD操作详解

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!当实体类或数据库表字段过多时,可以考虑使用 Map 传递参数。的包名要和 DAO/Mapper 接口的包名一致!在 MyBatis 中,推荐使用第二种方式。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 878

Mybatis接口参数绑定机制

1.接口方法是一个参数:mapper文件中取值:#{随便写} ,建议可读性要高 见名知意 2.接口方法是多个参数: (1)通过下标的方式绑定(缺点:可读性不高) (2)通过注解的方式绑定(重点) PS: @Param注解中 value属性可以省略 。 (3)通过map的方式绑定(了解) (4)通过对象的方式绑定(重点) 二:使用mybatis完成CRUD 查询多条数据 2.添加 3.删除 ...

m0_59776219的博客 198

MyBatis的CRUD

MyBatis的CRUD 一、关于namespace 在之前版本的 MyBatis 中,命名空间(Namespaces)的作用并不大,是可选的。 但现在,随着命名空间越发重要,你必须指定命名空间。 命名空间的作用有两个,一个是利用更长的全限定名来将不同的语句隔离开来,同时也实现了你上面见到的接口绑定。就算你觉得暂时用不到接口绑定,你也应该遵循这里的规定,以防哪天你改变了主意。 长远来看,只要将命名空间置于合适的 Java 包命名空间之中,你的代码会变得更加整洁,也有利于你更方便地使用 MyBatis。 命名

Daylight629博客 184
上一篇: MyBatis中${}和#{}的区别
下一篇: mysql服务器常用的命令
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值