当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进行处理时也会出现同样的问题。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。