mybatis传两个及两个以上参数时,有几种方法,分别阐述
时间: 2023-12-10 08:02:34 浏览: 129
MyBatis 传递多个参数时,一般有以下几种方法:
1. Map 类型
使用 Map 类型传递参数,可以将多个参数放入一个 Map 中,然后将 Map 作为参数传递给 MyBatis,如下所示:
```
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("param1", param1);
paramMap.put("param2", param2);
List<MyObject> list = sqlSession.selectList("com.example.selectByParam", paramMap);
```
在 SQL 语句中,则可以通过 `${key}` 的方式获取 Map 中的值,如下所示:
```
<select id="selectByParam" resultType="MyObject">
SELECT * FROM my_table WHERE column1 = #{param1} AND column2 = #{param2}
</select>
```
2. @Param 注解
使用 @Param 注解传递多个参数,可以将多个参数在方法中使用 @Param 注解进行命名,然后在 SQL 语句中通过 `${paramName}` 的方式获取对应的值,如下所示:
```
List<MyObject> selectByParam(@Param("param1") String param1, @Param("param2") String param2);
```
在 SQL 语句中,则可以通过 `${paramName}` 的方式获取参数的值,如下所示:
```
<select id="selectByParam" resultType="MyObject">
SELECT * FROM my_table WHERE column1 = #{param1} AND column2 = #{param2}
</select>
```
3. POJO 类型
使用 POJO 类型传递多个参数,可以将多个参数封装成一个 POJO 对象,然后将 POJO 对象作为参数传递给 MyBatis,如下所示:
```
public class ParamObject {
private String param1;
private String param2;
//getter and setter
}
ParamObject paramObject = new ParamObject();
paramObject.setParam1(param1);
paramObject.setParam2(param2);
List<MyObject> list = sqlSession.selectList("com.example.selectByParam", paramObject);
```
在 SQL 语句中,则可以通过 `#{paramName}` 的方式获取 POJO 对象中对应属性的值,如下所示:
```
<select id="selectByParam" resultType="MyObject">
SELECT * FROM my_table WHERE column1 = #{param1} AND column2 = #{param2}
</select>
```
以上三种方法均可以实现传递多个参数,具体使用哪种方法,可以根据实际情况进行选择。
阅读全文