mybatis中@Param的作用
时间: 2023-09-13 18:05:03 浏览: 154
在 MyBatis 中,@Param 注解的作用是为了给参数命名,使得 SQL 语句中可以按照名称来使用这些参数,而不是按照位置来使用。
例如,在 MyBatis 的 Mapper.xml 文件中,如果有一个方法是这样的:
```xml
<select id="getUserById" resultType="User">
SELECT * FROM users WHERE id = #{id} AND name = #{name}
</select>
```
那么在 Java 代码中调用这个方法时,可以这样写:
```java
User user = mapper.getUserById(1, "张三");
```
但是如果使用 @Param 注解为参数命名,就可以这样写:
```xml
<select id="getUserById" resultType="User">
SELECT * FROM users WHERE id = #{userId} AND name = #{userName}
</select>
```
```java
User user = mapper.getUserById(@Param("userId") 1, @Param("userName") "张三");
```
这样做的好处是提高了代码的可读性和可维护性。
相关问题
mybatis中@param的作用
在 MyBatis 中,@Param 注解的作用是为了给参数命名,使得 SQL 语句中可以按照名称来使用这些参数,而不是按照位置来使用。
例如,在 MyBatis 的 Mapper.xml 文件中,如果有一个方法是这样的:
```xml
<select id="getUserById" resultType="User">
SELECT * FROM users WHERE id = #{id} AND name = #{name}
</select>
```
那么在 Java 代码中调用这个方法时,可以这样写:
```java
User user = mapper.getUserById(1, "张三");
```
但是如果使用 @Param 注解为参数命名,就可以这样写:
```xml
<select id="getUserById" resultType="User">
SELECT * FROM users WHERE id = #{userId} AND name = #{userName}
</select>
```
```java
User user = mapper.getUserById(@Param("userId") 1, @Param("userName") "张三");
```
这样做的好处是提高了代码的可读性和可维护性。
mybatis没有@Param也能绑定参数,为啥
MyBatis 是一个持久层框架,它支持 SQL 预编译,即使不使用 `@Param` 标签也可以绑定参数。原因在于 MyBatis 的映射文件(`.xml` 文件)通过 `<select>`、`<insert>`、`<update>` 或 `<delete>` 等标签来定义 SQL 语句,并允许通过 `<param>` 元素直接指定占位符的位置和变量名。这种方式不需要在 Java 对象上使用 `@Param` 注解。
当你在 XML 映射文件中编写类似这样的代码:
```xml
<select id="selectUser" parameterType="map" resultType="User">
SELECT * FROM user WHERE id = #{id} AND name = #{name}
</select>
```
这里的 `#{id}` 和 `#{name}` 就可以分别对应 Java POJO 中的 `id` 和 `name` 属性,MyBatis 在执行查询时会自动将这些属性值替换到 SQL 语句中。这种方式提供了灵活性,使得你在不依赖注解的情况下仍然能够传递参数。
阅读全文