MyBatis使用Map参数

MyBatis使用Map参数

方法一

如果传入的map有注解@Param(“params”),则key集合可以写成params.keys,value集合可以写成params.values。

1
2
3
public interface TestMapper {
List<String> getList(@Param("params") Map<String, String> params);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace=“com.zmjwdzjl.mapper.TestMapper”>
<select id="getList" restultType="String" parameterType="java.util.Map">
select
id
from user
<where>
<foreach collection="params.keys" item="key" separator="and">
${key} = #{params.${key}}
-- 或者另一种写法 ${key} = #{params[${key}]}
</foreach>
</where>
</select>
</mapper>

但是这两种方式map中的key只能是String类型,如果是其他类型,得到的value是null。#{params[${key}]}还可以写成${params[key]}。

方法二

如果传入的map的key要适用所有类型,可以遍历Map中的entrySet。

1
2
3
public interface TestMapper {
List<String> getList(@Param("params") Map<Long, String> params);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace=“com.zmjwdzjl.mapper.TestMapper”>
<select id="getList" restultType="String" parameterType="java.util.Map">
select
id
from user
<where>
<foreach collection="params.entrySet()" item="value" index="key" separator="or">
id = #{key} and user_name= #{value}
</foreach>
</where>
</select>
</mapper>
如果对您有帮助,可以打赏呦!