用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中

我们先来看Mapper接口中的@Select方法
package Mapper;
public interface Mapper {
@Select("select s_id id,s_name name,class_id classid from student where s_name= #{aaaa} and class_id = #{bbbb}")
public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id);
@Delete......
@Insert......
}
这里解释一下
1.@Select(....)注解的作用就是告诉mybatis框架,执行括号内的sql语句
2.s_id id,s_name name,class_id classid 格式是 字段名+属性名,例如s_id是数据库中的字段名,id是类中的属性名
这段代码的作用就是实现数据库字段名和实体类属性的一一映射,不然数据库不知道如何匹配
3.where s_name= #{aaaa} and class_id = #{bbbb} 表示sql语句要接受2个参数,一个参数名是aaaa,一个参数名是bbbb,如果要正确的传入参数,那么就要给参数命名,因为不用xml配置文件,那么我们就要用别的方式来给参数命名,这个方式就是@Param注解
4.在方法参数的前面写上@Param("参数名"),表示给参数命名,名称就是括号中的内容
public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id);
给入参 String name 命名为aaaa,然后sql语句....where s_name= #{aaaa} 中就可以根据aaaa得到参数值了
PS:下面看下spring中@param和mybatis中@param使用区别
1.spring中@param
/**
* 查询指定用户和企业关联有没有配置角色
* @param businessId memberId
* @return
*/
int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);
2.mybatis中的param
/**
* 查询指定用户和企业关联有没有配置角色
* @param businessId memberId
* @return
*/
int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);
从表面上看,两种并没有区别,但是在xml文件中使用的时候是有区别的,Spring中的@param在xml需要如下这样引用变量
<select id="selectRoleCount" resultType="java.lang.Integer" >
select
count(tbm.id)
from t_business_member_relation tbm
where tbm.business_id = #{0,jdbcType=INTEGER}
and tbm.member_id = #{1,jdbcType=INTEGER}
and tbm.role_business_id is not null
</select>
是根据参数的顺序来取值的,并且从0开始。而在mybatis @param在xml中则是如下这样引用变量的
<select id="selectRoleCount" resultType="java.lang.Integer" >
select
count(tbm.id)
from t_business_member_relation tbm
where tbm.business_id = #{businessId,jdbcType=INTEGER}
and tbm.member_id = #{memberId,jdbcType=INTEGER}
and tbm.role_business_id is not null
</select>
是通过参数名来引用的
注:如果Mapper.java文件中引用的是Spring的
org.springframework.data.repository.query.Param;
但是Mapper.xml中使用的是mybatis 的用法,那么就会如下的错误
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'businessId' not found. Available parameters are [1, 0, param1, param2]
截图如下
所以在使用的时候一定要注意@param引用和使用的一致性
总结
以上所述是小编给大家介绍的Mybatis中@Param的用法和作用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# mybatis
# param
# 用法
# mybatis中${}和#{}取值的区别分析
# MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)
# Mybatis中@Param注解的作用说明
# Mybatis中${param}与#{param}的区别说明
# 的是
# 字段名
# 小编
# 就会
# 是有
# 就能
# 在此
# 则是
# 两种
# 而在
# 这段
# 给大家
# 要用
# 上看
# 要给
# 可以根据
# 命名为
# 中就
# 数据库中
# 所述
相关文章:
如何用y主机助手快速搭建网站?
如何用狗爹虚拟主机快速搭建网站?
怎么将XML数据可视化 D3.js加载XML
SQL查询语句优化的实用方法总结
深圳网站制作平台,深圳市做网站好的公司有哪些?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何选择香港主机高效搭建外贸独立站?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
网站制作话术技巧,网站推广做的好怎么话术?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
如何在自有机房高效搭建专业网站?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
建站之星会员如何解锁更多建站功能?
如何在建站之星网店版论坛获取技术支持?
如何用西部建站助手快速创建专业网站?
建站之星logo尺寸如何设置最合适?
,如何利用word制作宣传手册?
内网网站制作软件,内网的网站如何发布到外网?
制作销售网站教学视频,销售网站有哪些?
Python文件管理规范_工程实践说明【指导】
如何通过商城免费建站系统源码自定义网站主题?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
建站之星收费标准详解:套餐费用及年费价格表一览
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
建站之星下载版如何获取与安装?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
定制建站策划方案_专业建站与网站建设方案一站式指南
如何快速上传建站程序避免常见错误?
家具网站制作软件,家具厂怎么跑业务?
常州企业建站如何选择最佳模板?
智能起名网站制作软件有哪些,制作logo的软件?
网站制作的步骤包括,正确网址格式怎么写?
建站上市公司网站建设方案与SEO优化服务定制指南
电商平台网站制作流程,电商网站如何制作?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
盐城做公司网站,江苏电子版退休证办理流程?
网站专业制作公司有哪些,做一个公司网站要多少钱?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何配置支付宝与微信支付功能?
建站之星代理如何获取技术支持?
宝塔建站后网页无法访问如何解决?
如何通过建站之星自助学习解决操作问题?
如何注册花生壳免费域名并搭建个人网站?
在线制作视频的网站有哪些,电脑如何制作视频短片?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
济南企业网站制作公司,济南社保单位网上缴费步骤?
宝塔面板如何快速创建新站点?
*请认真填写需求信息,我们会在24小时内与您取得联系。