首页 > 其他分享 >Mybatis中引用类型不需要加@param()注解

Mybatis中引用类型不需要加@param()注解

时间:2024-05-12 17:31:48浏览次数:21  
标签:name age Param 参数 param Mybatis 注解 引用

在 MyBatis 中,对于引用类型的参数(即 Java 对象),通常不需要使用 @Param 注解,除非你在映射文件中使用了多个参数,并且这些参数不是封装在一个对象中的。

当你只有一个引用类型的参数传递给 MyBatis 的映射器方法时,MyBatis 会自动将该参数作为唯一参数处理,并可以在 SQL 映射文件中通过 #{} 占位符引用该参数的属性。例如:

java
public interface UserMapper {
    User selectUserById(User user);
}

在上面的例子中,User 是一个引用类型,作为唯一参数传递给 selectUserById 方法。在对应的 SQL 映射文件中,你可以这样引用 User 对象的属性:

xml
<select id="selectUserById" resultType="User">
    SELECT * FROM user WHERE id = #{id}
</select>

这里,#{id} 直接引用了传入 User 对象的 id 属性,而不需要在方法签名中使用 @Param 注解。

然而,当你使用多个参数时(无论是基本类型还是引用类型),MyBatis 就无法直接确定每个参数的名字了。在这种情况下,你应该使用 @Param 注解来明确指定每个参数的名称,以便在 SQL 映射文件中引用它们。例如:

java
public interface UserMapper {
    User selectUserByNameAndAge(@Param("name") String name, @Param("age") int age);
}

在上面的例子中,selectUserByNameAndAge 方法接受两个参数:一个 String 类型的 name 和一个 int 类型的 age。由于这两个参数都是基本类型,而不是封装在一个对象中的,因此需要使用 @Param 注解来分别为它们命名。在 SQL 映射文件中,你可以这样引用它们:

xml
<select id="selectUserByNameAndAge" resultType="User">
    SELECT * FROM user WHERE name = #{name} AND age = #{age}
</select>

在这个例子中,#{name} 和 #{age} 分别引用了通过 @Param 注解命名的 name 和 age 参数。

总结来说,对于单个引用类型的参数,MyBatis 不需要 @Param 注解;而对于多个参数(无论是否包含引用类型),则需要使用 @Param 注解来命名每个参数,以便在 SQL 映射文件中正确引用它们。

标签:name,age,Param,参数,param,Mybatis,注解,引用
From: https://www.cnblogs.com/DuWenjie/p/18187975

相关文章

  • Spring常见注解
    Spring常见注解注解说明@Component使用在类上用于实例化Bean@Controller使用在类上用于实例化Controller@Service使用在类上用于实例化Service@Repository使用在类上用于实例化Repository@Autowired使用在字段上用于根据类型依赖注入@Qualifier结......
  • 【java】@Transactional事务注解
    事务注解目录一、什么是事务?二、事务的特性(具有ACID的特性)1.A原子性(atomicity):2.C一致性(consistency):3.I隔离性(isolation):4.D持久性(Durability):三、@Transactional的介绍四、@Transactional的实现原理五、@Transactional事务的隔离级别六、@Transactional事务的传播......
  • JAVA开发使用@JsonFormat注解,日期比实际日期少一天问题
    前言最近同事反馈一个问题,说是日期保存后未发生变化。刚开始以为是字段未对应或者是未保存成功,当我去进行排查的时候发现,发现数据保存没有问题。奇了怪了。问题现象库里日期数据保存正确,但是后台返回前台页面发现不正确。排查过程刚开始怀疑是数据未保存成功,经过测试发现数据......
  • mybatis缓存
    缓存缓存(即cache)的作用是为了减去数据库的压力,提高数据库的性能。缓存实现的原理是从数据库中查询出来的对象在使用完后不销毁,而是存储在内存(缓存)中,当再次需要获取该对象时,直接从内存中获取,不再向数据库执行select语句,减少对数据库的查询次数,提高了数据库的性能。缓存是使用Map......
  • SpringBoot整合Mybatis时mapper文件和xml文件的位置
    xml文件放在resources下看下我的项目目录2.由于放在resurces下就无法扫描到xml文件,所以就需要在配置文件配置--mapper文件位置mybatis.mapper-locations=classpath:mapper/*.xml或mybatis.mapper-locations=classpath:/mapper/*.xmlxml和mapper文件放在一起我的项目......
  • mybatisplus 中查询的实体对应的表名是动态的解决方案
    开发中遇到需要查询一些表里的数据,这些数据按照一定的规则存放在不同的数据库表里,例如表名是table_name+月份 table_name_2024_05,table_name_2024_04这样,这些表的结构都相同。网上找了一些动态修改实体对应数据库表名的方法,操作相对复杂而且跟mybatisplus的版本有关。自己......
  • mybatis核心配置文件
    在resource目录下,创建mybatis-config.xml(官方建议起名方式)核心配置文件常用元素properties:通过resource属性从外部指定属性文件(db.properties),该属性文件描述数据库连接的相关配置(数据库驱动、连接数据库的url、数据库用户名、数据库密码),位置也是在/resources目录下settin......
  • SpringBoot中全部注解归纳解释
    https://blog.csdn.net/weixin_55772633/article/details/131882825https://www.cnblogs.com/jingzh/p/14620211.html1springboot注解1.1引言1.2基本注解1.3JPA注解1.4SpringMVC相关注解1.5全局异常处理1.6项目中具体配置解析和使用环境1.7Lombok注解1.8数......
  • mybatis中的增删改操作
    在之前的操作之后,若要编写增删改操作,需要变动的只有UserMapper接口,UserMapper.xml以及测试类举例删除操作-delete://Dao层接口UserMapper增加deleteById方法:intdeleteById(intid);映射文件UserMapper.xml中增加与Dao层接口匹配的如下内容<!--删除操作--><deleteid="......
  • 第一个mybatis程序
    注意与之前JDBC的区别,简化在哪里准备工作数据库,表的创建:创建一个名为mybatis的数据库,在其中创建user表,字段为is,name,pwd项目的准备:新建一个普通的maven项目作为父项目,删除src目录,在pom文件中导入必要的依赖(mysql-connector-java,mybatis,junit),创建第一个子项目,选择父项目......