java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis 参数绑定

MyBatis 参数绑定的具体实现

作者:Yrui.

本文主要介绍了MyBatis 参数绑定的具体实现,包括默认参数名、@Param注解和POJO/DTO对象三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、MyBatis 参数绑定机制

1.1 核心概念

当 Mapper 接口方法接收多个参数时,MyBatis 提供三种参数绑定方式:

二、arg 参数(参数顺序索引)

2.1 使用场景

适用于没有使用 @Param 注解的情况,通过参数在方法中的顺序位置进行绑定。

2.2 XML 映射示例

<select id="findBySalary2" resultType="Emp">
    SELECT * FROM emp 
    WHERE salary >= #{arg0} AND salary <= #{arg1}
</select>

2.3 Java 接口定义

List<Emp> findBySalary2(Double start, Double end);

2.4 特点

三、param 参数(自动编号索引)

3.1 使用场景

MyBatis 为每个参数自动生成的别名,编号从 1 开始。

3.2 XML 映射示例

<select id="findBySalary1" resultType="Emp">
    SELECT * FROM emp 
    WHERE salary >= #{param1} AND salary <= #{param2}
</select>

3.3 Java 接口定义

List<Emp> findBySalary1(Double start, Double end);

3.4 特点

四、@Param 注解(显式命名参数)

4.1 使用场景

当需要明确参数语义或方法有多个参数时推荐使用。

4.2 XML 映射示例

<select id="findBySalary3" resultType="Emp">
    SELECT * FROM emp 
    WHERE salary >= #{minSalary} AND salary <= #{maxSalary}
</select>

4.3 Java 接口定义

List<Emp> findBySalary3(
    @Param("minSalary") Double start, 
    @Param("maxSalary") Double end
);

4.4 特点

五、对比总结

方式索引起点顺序敏感性可读性推荐场景
arg0, arg10简单查询(参数<2)
param1, param21需要明确编号的场景
@Param自定义多参数/复杂业务场景

六、综合使用示例

6.1 混合使用场景

<select id="findComplex" resultType="Emp">
    SELECT * FROM emp 
    WHERE 
        salary >= #{min} 
        AND salary <= #{param2} 
        AND name LIKE #{arg2}
</select>

6.2 对应接口

List<Emp> findComplex(
    @Param("min") Double minSalary,
    Double maxSalary, 
    String nameKeyword
);

七、最佳实践建议

  1. 参数超过 2 个时:必须使用 @Param 注解
  2. 涉及范围查询:建议使用 @Param 明确参数语义
  3. 维护性考量:优先选用 @Param 方式
  4. 版本兼容性:注意不同 MyBatis 版本对默认别名的支持差异

到此这篇关于MyBatis 参数绑定的具体实现的文章就介绍到这了,更多相关MyBatis 参数绑定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文