mybatis传入参数为map,map的某个值位数组解析错误的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis传入参数为map,map的某个值位数组解析错误的问题相关的知识,希望对你有一定的参考价值。

mybatis传入参数为map
map key 'userId' value 1
key 'goodsId' value []

这个数组会当成字符串解析,怎么才能当成数组解析呢,求解?

没分了,帮忙解答一下吧,谢谢!

参考技术A #propertyName[]#

mybatis多个参数传递

Map接收参数      

要查阅本文的基本都是需要传入多个参数的,这里记住一句话:无论你传的参数是什么样的,最后mybtis都会将你传入的转换为map的,那么既然这样,当我们要传入多个参数时,何不直接给与map类型即可,然后mapper.xml通过#{map.key}来获取值即可,这个特别适合动态搜索,或者多个参数的查询,并且可以在mapper的xml语句中通过if判断来实现若为空,则不添加查询条件,

<if test="userId != null">
#{userId,jdbcType=VARCHAR},
</if>

还可以通过for来进行遍历。

一、单个参数:

public List<XXBean> getXXBeanList(@param("id")String id);  

<select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean">

  select t.* from tableName t where t.id= #{id}  

</select>  

其中方法名和ID一致,#{}中的参数名与方法中的参数名一致, 这里采用的是@Param这个参数,实际上@Param这个最后会被Mabatis封装为map类型的。

select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。

二、多参数:

方案1

public List<XXXBean> getXXXBeanList(String xxId, String xxCode);  

<select id="getXXXBeanList" resultType="XXBean">

  select t.* from tableName where id = #{0} and name = #{1}  

</select>  

由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始

方案2(推荐)基于注解

public List<XXXBean> getXXXBeanList(@Param("id")String id, @Param("code")String code);  

<select id="getXXXBeanList" resultType="XXBean">

  select t.* from tableName where id = #{id} and name = #{code}  

</select>  

以上是关于mybatis传入参数为map,map的某个值位数组解析错误的问题的主要内容,如果未能解决你的问题,请参考以下文章

mybatis传入多个参数

mybatis传入多个参数

mybatis多个参数传递

Mybatis传入参数为map

mybatis中mapper方法怎么传入多个参数值

mybatis中传入map类型的数据返回int类型数据