首页 > 其他分享 >spring的@Param注解和mybatis中的@Param注解的区别

spring的@Param注解和mybatis中的@Param注解的区别

时间:2023-02-08 14:44:16浏览次数:39  
标签:business businessId Param tbm mybatis 注解 id

1、spring中@Param ( import org.springframework.data.repository.query.Param; )

int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);

2、mybatis中param,( import org.apache.ibatis.annotations.Param )

int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);

从方法传参上看,两者并没有区别,但是在实际使用中有区别

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中书写Sql使用的是mybatis 的用法,那么就会如下的错误

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'businessId' not found. Available parameters are [1, 0, param1, param2]

标签:business,businessId,Param,tbm,mybatis,注解,id
From: https://www.cnblogs.com/zuitaiping/p/17101708.html

相关文章

  • MyBatis中的#和$有什么区别
    什么是MyBatisMyBatis是一款优秀的持久层框架,特别是在国内(国外据说还是Hibernate的天下)非常的流行,我们常说的SSM组合中的M指的就是#mybatis#。MyBatis支持定制化SQL......
  • 解决mybatis resultMap根据type找不到对应的包问题
    目录mybatisresultMap根据type找不到对应的包mybatisresultMap根据type找不到对应的包这里需要配置typeAliasesPackage自动配置别名typeAliasesPackage定义多个时......
  • spring注解
    Spring注解驱动文章来源:yuque.com/zuihoudewu/java_note/gwtgt9#ip308@Cofigretion(proxyBeanMethods=true) 标记在类上,告诉spring这是一个配置类首先引出两个概念:Ful......
  • shiro-从数据库中获取授权信息与显示菜单在页面上(注解版和jsp标签)
    修改realm的doGetAuthorizationInfo,从数据库查询权限信息。使用注解式授权方法。使用jsp标签授权方法。1.修改doGetAuthorizationInfo从数据库查询......
  • Springboot整合AOP和注解,实现丰富的切面功能
    简介我们在文章《SpringAOP与AspectJ的对比及应用》介绍了AOP的使用,这篇文章讲解一下AOP与注解的整合,通过注解来使用AOP,会非常方便。为了简便,我们还是来实现一个计时的功......
  • springsecurity 基于注解的方式实现不拦截某个接口
    添加忽略拦截注解@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceAuthIgnore{}/***在放......
  • 关于mybatis resulttype 返回值异常的问题
    目录mybatisresulttype返回值异常例如:resulttype="student"但是当中有些字段为空例如:数据库字段为:s_name实体类字段为namemybatisresultType="map"的常见问题一、......
  • MyBatis-Plus——saveOrUpdate方法如何确定主键
    saveOrUpdate方法:先更新,更新失败返回0;发起查找,查找失败返回0,最后进行插入操作有三种执行情况1.插入的数据不带id插入成功。同时MyBatis-Plus会自动生成一个19位的id,默认主......
  • 整合MyBatis
      创建实现类的目的,sqlsession私有sqlsession通过在配置文件中的构造方法注入到实现类的私有属性中,test方法只做一件事,就是通过getbean生成实现类对象,然后调用方法输......
  • SpringBoot集成mybatis
    SpringBoot创建项目首先创建好项目,详情见:https://www.cnblogs.com/expiator/p/15844275.htmlSpringBoot引入mybatis依赖<dependency><groupId>org......