Java中mapper中参数对象别名为param, mapper.xml需要写parameterType吗
时间: 2024-02-21 12:01:13 浏览: 120
Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式.pdf
在 Java 中,如果你在 Mapper 接口的方法中使用了参数对象别名为 `param`,则 MyBatis 会默认将参数类型设置为该对象的类型,因此你可以不用在 Mapper.xml 文件中指定参数类型(parameterType)。例如:
```java
public interface UserMapper {
User getUserById(@Param("param") int id);
}
```
```xml
<!-- Mapper.xml -->
<select id="getUserById" resultType="User">
SELECT * FROM user WHERE id = #{param}
</select>
```
在这个例子中,因为我们将参数对象别名设置为 `param`,MyBatis 会自动将参数类型设置为 `int`。因此,在 Mapper.xml 文件中,我们不需要指定参数类型。
需要注意的是,虽然不需要在 Mapper.xml 文件中指定参数类型,但是如果你在 Mapper.xml 文件中使用了 OGNL 表达式来访问参数对象的属性,那么你需要确保参数对象的类型正确并且属性名正确。例如:
```java
public class UserQuery {
private int id;
private String name;
// getter 和 setter
}
```
```java
public interface UserMapper {
List<User> getUsersByNameAndId(@Param("param") UserQuery query);
}
```
```xml
<!-- Mapper.xml -->
<select id="getUsersByNameAndId" resultType="User">
SELECT * FROM user WHERE id = #{param.id} AND name = #{param.name}
</select>
```
在这个例子中,我们使用了 OGNL 表达式访问了参数对象 `UserQuery` 的 `id` 和 `name` 属性。因此,即使我们没有在 Mapper.xml 文件中指定参数类型,我们也需要确保参数对象的类型为 `UserQuery`,属性名也要正确。
阅读全文