MyBatis 的参数列表中 的参数值

MyBatis Log Plugin:SQL调试利器,告别手动拼接参数 在Java后端开发中,SQL调试是数据库操作的核心环节。MyBatis作为流行的ORM框架,其日志输出常包含占位符和参数列表,需要开发者手动拼接才能获得可执行的SQL语句,这一过程不仅耗时且易错。MyBatis Log Plugin通过监听MyBatis的日志事件,智能解析SQL模板与参数,实时还原为标准SQL,实现了所见即所得的调试体验。该工具显著提升了开发效率,尤其在处理动态SQL、批量操作及复杂查询时,能快速定位问题,是Java工程师进行SQL调试和性能初步分析的必备插件。 阅读详情
List<SalesContract> getAll(int userId);
List<ProjectReview> loadproject(int userId, @Param(value = "status") Integer status, Integer salesContract);

二者之间的区别:

第一个是 Java的基础类型 不进行 判空操作

第二个 是包装类:需要 判空时候,出现的问题

当使用 Integer 出现问题 

解决方案 一  :使用 _parameter 来代替

方案二 :使用 

@Param(value = "status") 注解

方案三:使用 map  把 对应的条件 进行封装 此时 对应的是》使用key当作 取值的策略

方案四 : 把 查询条件封装为实体类  然后把对应的属性 写上get和set  

userId

或者 使用int

看看源码 我们 解读一下  为什么 会这样?

在这里判断 对应的参数类型 map 还是 list  或者 基础类型 或者对象等。。。

判断 是否 是一个类?

会加载出所有的 在配置文件中的类别。

 

假如我们没有给 对象 起名字 . 就会使用 默认的名字

 

使用 了ognl 加载参数

 

读到你的 判断 语句

但是 对应的Integer  类 没有 对应 getUserId 这个方法会报错。

 

MyBatis @Param注解深度解析:参数绑定机制与最佳实践 在Java持久层框架中,参数绑定是ORM(对象关系映射)的核心机制之一,它负责将Java方法中的参数值安全、准确地映射到SQL语句的占位符上。MyBatis通过其独特的参数包装策略实现这一过程,其中参数名的解析遵循明确的优先级链,包括@Param注解指定、编译参数保留、反射获取及位置索引兜底等。理解这一原理对于编写稳定、可维护的数据访问层至关重要,它能有效避免运行时参数绑定错误,提升代码的健壮性。在实际开发中,尤其是在处理多参数方法、动态SQL(如<foreach>遍历)或复杂对象嵌套时,合理使用@Para 阅读详情

相关推荐

多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解

多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解 1. 概览 在开始具体讨论卡尔曼滤波和匈牙利算法之前,首先我们来看一下基于检测的目标跟踪算法的大致流程。 2. 卡尔曼滤波(Kalman filter) 目标跟踪中使用的就是最基础的 Kalman filter 算法。这里也仅仅讨论最基础的 Kalman filter 算法。 卡尔曼滤波算法的过程很简单,如下图所示。最核心的两个步骤就是预测和更新(下图的 correct)。 在目标跟踪任务中,目标的

生命在于折腾! 2万+

使用mybaits时遇到的问题1

使用mybatis时遇到了一个bug,磨了一个下午,最后查看别人的文章最后总算解决了,这里记录下。 原文章在这里:https://blog.youkuaiyun.com/weixin_43244841/article/details/107339953 为了放置该路径

hardlydream的博客 246

武汉大学朱玉贤院士团队再发Nature Genetics,阐述棉花独特折叠胚胎形成的分子调控与演化机制

武汉大学朱玉贤院士团队再发Nature Genetics,阐述棉花独特折叠胚胎形成的分子调控与演化机制。

Pangenes的博客 1335

mybatis之IN多条件查询,查询status=多个值的数据

mybatis之IN多条件查询,查询status=多个值的数据

weixin_43762113的博客 2247

RocketMQ 为什么要自己做一个 NameServer ?RocketMQ 5.x 版本中的 proxy、controller 和 container 分别有什么用 ?

1.独立运行的分散结构 2.简化实现,容忍部分数据不一致 Proxy:多语言支持、简化开发 Controller: 提高 Broker 的性能 Container:提高资源利用率,平衡负载

xaiobit_hl的博客 1490

记录:rk3568适配开源GPU驱动(panfrost)

摘要:本文介绍了在RK3568芯片上移植Mali-G52 GPU驱动的过程。主要包括内核dts文件修改和内核配置调整两部分。

xuesong10210的博客 2237

mybatis 数值类型的参数!=‘‘ 会怎样

此处status为integer类型,但是在做传参数判断时当成了string看待 结果: status=0 ,test=false <if test="status!=null and status !=''"> and book.status= #{status} </if>

零零落落的博客 320

【AI大模型】核心基石:Transformer架构入门通俗完整解读

文章摘要: Transformer架构是AI大模型(如GPT、Llama等)的核心基石,彻底颠覆了传统RNN/LSTM的逐字计算模式,通过自注意力机制实现全局并行运算和长文本语义理解。本文用通俗语言拆解Transformer的核心模块:位置编码保留语序、多头注意力捕捉上下文关联、掩码机制确保生成逻辑、残差连接稳定训练,并搭配极简PyTorch代码演示Decoder架构的逐字生成过程。Transformer的并行性、可堆叠性和全局注意力优势,使其成为千亿参数大模型的基础。理解Transformer是掌握大模型

unber的博客 43

mybatis 之 if test 条件查询,参数为0时,查询出所有结果

数据库中存储status用Integer(0,1,2)代替具体业务状态,当条件查询status=0时直接返回所有数据,status=1,2均可查出。 "<if test='exeStatus!=null and exeStatus!=\"\"'>", " and exe_status=#{exeStatus}", "</if>", mybatis源码: 首先获取两个判断对象的类型,当拿一个字符串和一个数字判断的时候, 当Mybatis发现,这个字符串是可以转.

kerouacs的博客 1586

ITIL 4 讲解:服务目录

最近一直比较忙,没有时间写文章了。今天有空,写写服务目录。 在最近的项目中,服务目录是比较热的话题。金融行业大部分银行、证券、金融公司都实行ITIL流程管理有些年头了,ITIL中最基础的服务请求、事件、问题和变更都已经实施完毕,目前客户在运维领域做的项目大部分都要求整理服务目录,实行服务级别管理。 服务目录介绍 首先解释一下什么是服务目录。服务目录在ITIL 4的定义是:有关服务提供商的所有服务和服务产品的结构化信息,与特定目标受众相关。这个解释有些晦涩难懂,简单来说就是提供给业务用户的服务项,就像饭

雅子MM的专栏 6468

IDEA出现闪退或打不开的解决方法

本身项目比较大,为了打开这个软件,可调节IDEA中安装的bin目录下有个。打开IDEA的时候过一会便闪退,可以再IDEA的右下角看到如下提示。(如果没有该提示,软件右下角也会有个红色感叹号,点开查看原因即可)闪退的多数原因大致是out of memory,内存溢出。查看任务管理器中的进程:(发现内存随时有溢出的情况)但也需要注意,该参数并不是越大越好,适中即可。只有个别原因是需要管理员权限就可执行!可以尽量减少软件的启动。

码农研究僧的博客 5944

MyBatis方法参数详解

MyBatis方法参数详解 单参数方法 单参数方法的参数详解, 主要介绍不同类型的参数,在Mapper映射文件中的配置方式. 参数为: 简单类型(基本数据类型+String) 参数为: 对象类型 参数为: List集合类型-List 参数为: List集合类型-List 参数为: 数组类型 参数为: Set集合类型 参数为: Map集合类型 1.1 简单类型 1.1.1 方法示例 public User findUserById(int id); 1.1.2 映射配置 <!-- public

qq_45228323的博客 1637

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Mybatis(二):实现“增删改查”

本博主将用优快云记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

weixin_52533007的博客 2635

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

Mybatis中的参数占位符:${...} 、#{...}的区别

Mybatis中的参数占位符:${...} 、#{...}的区别

Java技术加油站的博客 318

mybatis基础

mybatis基础

程序猿张同学的博客 634

MyBatis复习笔记

MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

tl1216的博客 625

03-MyBatis(二)

Mybatis学习笔记二,参考视频:【【尚硅谷】SSM框架全套教程,MyBatis+Spring+SpringMVC+SSM整合一套通关】https://www.bilibili.com/video/BV1Ya411S7aT/?p=63&share_source=copy_web&vd_source=19f3a5f9956dd56dae66f9323766a58d

m0_73676663的博客 136

6.MyBatis获取参数值和查询处理

{}的本质就是,#{}的本质就是使用字符串拼接的方式拼接sql,若为∗∗字符串类型∗∗或∗∗日期类型∗∗的字段进行赋值时,需要在外面手动加单引号∗∗′。

a1303490776的博客 864

Mybatis获取有序的参数列表的过程

MappedStatement类中的getBoundSql() 主要作用解析标签节点,如where、if等组成动态SQL的标签。 方法内部分析: 40行:根据configuration解析的配置信息和手动传入的参数列表生成DynamicContext,稍后用于动态sql拼接 41行:对动态sql的标签进行解析,并对sql进行拼接。此时getBoundSql()方法入口传入的map集合,进行动态sql拼接时,判断map中的key是否在动态sql的条件表达式中存在,存在则将条件中的sql进行拼接。倘若

YellowMonkey的博客 870

MyBatis3源码解析(4)参数解析

上篇文章中探索了查询语句的执行过程,下面我们接着来看看其中的查询参数的解析细节,是如何工作的

github_35735591的博客 351

【源码解读之 Mybatis】【核心篇】--第7篇:ParameterHandler参数处理机制

答案要点安全优势:支持参数绑定,有效防止SQL注入攻击性能优势:SQL预编译,相同SQL结构可以复用执行计划,减少10-20%的SQL解析时间(视数据库实现)类型安全:通过TypeHandler进行类型转换,确保类型安全维护性:参数与SQL分离,代码结构更清晰功能丰富:支持主键生成、批量操作等高级功能ParameterHandler的重要性:PreparedStatementHandler的核心优势来自于ParameterHandler的参数绑定机制。/*** 参数处理器接口。

savdgascasga的博客 937

Mybatis动态SQL之判断参数值

问题需求: 下拉列表共有3个选择项,“标题”、“内容”、“关键字”,使用Spring MVC + Mybatis框架,动态SQL构想: p.pro_title like concat(concat('%', #{content}),'%') p.pro_content like concat(concat('%',#{content}),'%') p.pro_keywords li

蕉下客 6759

MyBatis:参数处理模块详解

MyBatis:参数处理模块详解

weixin_46619605的博客 760

MyBatis参数处理模块详解

MyBatis参数处理模块分析摘要:MyBatis参数处理模块位于核心处理层,主要负责将Java对象参数转换为JDBC类型并设置到PreparedStatement中。该模块通过ParameterHandler接口及其默认实现DefaultParameterHandler完成参数处理,采用TypeHandler实现类型转换。参数处理流程包括从BoundSql获取参数映射、遍历设置参数值、处理null值等。参数值获取支持多种策略,包括从附加参数、基本类型、POJO对象等不同来源获取。类型转换通过TypeHan

qq_41262225的博客 935

Mybatis参数处理

Mybatis参数处理 单一参数 无特殊处理,参数名相当于占位符,#{任意}都能取出值 示例 XML映射: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.lh

qq_44808053的博客 440
上一篇: 关于springboot 整合 FreeMaker遇到的大坑
下一篇: mybatis 加载配置文件的实验 mapper文件加载情况说明
drsbbbl
博客等级 码龄9年 19粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值