@Param 注解的作用

@Param 注解是 MyBatis 提供的一个注解,用于在 Mapper 接口中指定方法参数的名称,以便 MyBatis 能够正确地将参数映射到 SQL 映射文件中的占位符。@Param 注解是针对方法参数的,不是全局配置的一部分。

使用 @Param 注解的正确方法

1. 在 Mapper 接口方法中使用 @Param

当一个方法有多个参数时,你需要为每个参数使用 @Param 注解,以便在 SQL 映射文件中能够正确地引用这些参数。这个注解是局部的,不会影响全局配置,只对方法参数有效。

例如:

Mapper 接口:

import org.apache.ibatis.annotations.Param;

public interface EmpMapper {
    List<Emp> list(@Param("name") String name,
                   @Param("gender") String gender,
                   @Param("begin") Date begin,
                   @Param("end") Date end);
}

Mapper XML 文件:

<select id="list" resultType="com.itheima.pojo.Emp">
    SELECT * FROM emp
    <where>
        <if test="name != null and name.trim() != ''">
            name LIKE CONCAT('%', #{name}, '%')
        </if>
        <if test="gender != null and gender.trim() != ''">
            AND gender = #{gender}
        </if>
        <if test="begin != null">
            AND hireDate &gt;= #{begin}
        </if>
        <if test="end != null">
            AND hireDate &lt;= #{end}
        </if>
    </where>
</select>

全局配置和实体类的关系

  • 全局配置:MyBatis 的全局配置(如 mybatis-config.xml 文件)不直接涉及 @Param 注解的使用。全局配置主要用于设置 MyBatis 的运行时行为,例如数据库连接池、缓存、日志等。

  • 实体类:实体类用于表示数据库表中的记录,但不涉及 @Param 注解。@Param 是用于将方法参数映射到 SQL 占位符的,因此它的配置和使用都集中在 Mapper 接口中。

总结

  • @Param 注解是局部的,用于 Mapper 接口中的方法参数,不是全局配置的一部分。
  • 如果方法有多个参数,需要在每个参数上使用 @Param 注解来指定名称,并在 SQL 映射文件中使用这些名称。
  • 全局配置文件和实体类不涉及 @Param 的配置或使用。

希望这能帮助你理解 @Param 注解的使用及其配置方式!

注意:在项目中不使用 @Param,可能会报“500” 的错误哦!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值