【环境问题】基础Web环境搭建问题记录4——Java不记录形参,运行期替换arg0,arg1...

31 篇文章 0 订阅
21 篇文章 0 订阅

环境:
MacBook Pro 15
jdk8
IntelliJ IDEA
基础Web框架:Spring+SpringMVC+MyBatis+MySQL+Maven

引子:

大概3,4年前,开始接触Spring+Mybatis这套框架;作为应届生毕业,幸每个都有个mentor带着,度过了一段从白纸到草纸的过程。
问题大概发生在正式入职的1个月内,接手老大的一个后台项目(Spring+Mybatis…),记得看到mybatis中Dao中的方法可以直接与*.xml文件里sql对应,感觉很NB。然后就碰到一些列问题…其中一个就是:_parameter参数经常出现在if test标签里?感觉很奇怪,Dao的方法里也没有配置这个参数。碰巧向mentor问了一嘴,mentor嘴角带着一抹鬼笑的简单解答了mybatis的内置参数blabla…

问题:

mybatis 在Dao中定义方法,传多(>2个)参数数时,需要使用@param(“paramName”)指明传递的参数名称,否则无法正确对应到*.xml文件的方法中。
这里写图片描述

TIPS:

这里错误原因:Java没有保存形参的记录,所以在运行期会把形参统一替换成arg0(param1)、arg1(param2)这样的形参参数列表。
从报错截图可以看出Java运行期替换的参数表现形式:

arg0,arg1,arg2…
param1,param2,param3…

这两种形参形式,只代表参数的顺序,可以混合使用。
这里就引申出这个问题的另外解决办法(不建议开发中使用,仅供学习研究):可以直接在*.xml中,直接配置#{arg0},#{arg1}这样,就标清楚了Dao的Java方法的形参的顺序,而不用显示配置@Param()。
当然可以#{arg0},#{param2}这样混着食用,保证形参顺序对应即可。

参考:

最近再看一个项目:一个关于”Java高并发秒杀API”的项目
项目源码:https://github.com/codingXiaxw/seckill
项目老师:夏循武

JavaSSM学习小结(2):DAO层学习

MyBatis内置参数看这里:
MyBatis学习——内置参数的使用:_parameter、_datebaseId
mybatis中_parameter使用和常用sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值