Mybatis有多少种参数注入的方式?
1 个回答
想多了全是问题,想开了全是答案。小青牛## 作用 MyBatis 参数传递用于把 Mapper 方法中的入参传入 SQL,常用方式主要有以下几类: - **单个参数** - 基本类型、包装类型、字符串等:可直接在 SQL 中通过 `#{}` 引用。 - Java 对象:可直接通过 `#{属性名}` 访问对象属性。 - **多个参数** - 使用 `@Param` 注解为每个参数命名,SQL 中通过 `#{参数名}` 引用。 - 使用 `Map` 封装多个参数,SQL 中通过 `#{key}` 取值。 - **复杂对象参数** - 将查询条件封装为 Java 对象,如 `UserQuery`。 - SQL 中直接使用 `#{id}`、`#{name}` 等访问对象属性。 - **动态 SQL 中的参数使用** - 可结合 `<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>` 等标签,根据参数是否为空或满足条件动态拼接 SQL。 - **混合使用方式** - `@Param` 可以和 Map、对象属性等方式结合使用。 - 例如给对象参数命名后,可通过 `#{query.id}` 这样的方式访问对象属性。 ## 原理 - MyBatis 在执行 Mapper 方法时,会把方法入参转换为 SQL 可访问的参数上下文。 - `#{}` 是预编译占位符,MyBatis 会通过参数映射设置参数值,从而避免直接拼接 SQL。 - 使用 `@Param` 时,MyBatis 根据注解名称保存参数,因此 SQL 中可以按名称访问。 - 使用 `Map` 时,MyBatis 以 Map 的 key 作为参数名。 - 使用 Java 对象时,MyBatis 通过对象的属性名读取属性值。 - 动态 SQL 标签会根据参数值判断条件是否成立,再决定是否拼接对应 SQL 片段。发布于 2026-10-28 02:57 •IP属地 湖北举报评论收藏
公众号进入网站体验更佳

