温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

当MyBatis 参数类型为String时如何解决

发布时间:2020-11-12 16:25:13 来源:亿速云 阅读:354 作者:Leah 栏目:编程语言

当MyBatis 参数类型为String时如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1. 参数为String时的插值问题

假设有下面一Dao接口方法

public Account findByAccountType (String type)throws DaoException;

对应的Mapper.xml

<select id="findByAccountType " parameterType="string" resultType="account">
  select *
  form account
  <where>
    <if test ="type != null">
      type=#{type}
    </if>
  </where>
</select>

一般我们都是按这样的方式来写的,对于其他类型是没错的,但是如果为String的话会抛下面的异常:

There is no getter for property named 'type ' in 'class java.lang.String'

因为MyBatis要求如果参数为String的话,不管接口方法的形参是什么,在Mapper.xml中引用时需要改变为_parameter才能识别 :

<select id="findByAccountType " parameterType="string" resultType="account">
  select *
  form account
  <where>
    <if test ="_parameter!= null">
      type=#{_parameter}
    </if>
  </where>
</select>

2. 对字符串参数进行是否相等 比较时的问题

错误:

<if test="_parameter == '1' ">
  type=#{_parameter}
</if>

正确:

<if test='_parameter == "1" '>
  type=#{_parameter}
</if>
<if test="_parameter == '1'.toString() ">
  type=#{_parameter}
</if>

注:上述问题不仅限于<if>标签,其他动态sql标签在对String进行处理时也会出现同样的问题。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI