MyBatis遍历字符串,在MyBatis使用特殊符号,Sql数据类型转换


前言

这两天打代码在mybatis的数据库操作上 遇到了一些问题。其实主要还是数据库知识有点薄弱,是我菜了,所以写个博客做个笔记,以后遇到就不会再懵逼了。

一、MyBatis遍历字符串

说到myBatis的遍历,我只想到mybatis遍历数组或链表,所以我的字段是字符串如“1,2,3”.所以我最先想到的是在调用Mapper接口时,吧该字符串转化成数组,传入mybatis里,其实一般的情况下是没有问题的,但是我的数据库设置太多映射了。在还没调用到将字符串转为数组时就通过方法映射调用MyBatis遍历的方法,然后就报了数据不匹配的错。这是防不胜防。我还一直以为是我遍历方法写错了,
以下是我遍历字符串的方法。学到了,还能这么用

 select * from t_toWho where id in
        <foreach collection="strs.split(',')" item="item" index="index"  open="(" close=")" separator=",">
            CONVERT(#{item},SIGNED)
        </foreach>

二、在MyBatis使用特殊符号

因为以前在Mybatis的判断都是 以下之类的

<if test="A!=null and A!=“”"> </if>

所以今天突然想比大小 就发现报错了

与元素类型 “if“ 相关联的 “test“ 属性值不能包含 ‘<‘ 字符

特意去学习了一波

gt 对应 >
gte 对应 >=
lt 对应 <
lte 对应 <=
eq 对应 ==
neq 对应 !=

还遇到了一个比较坑爹的 关于字符串拼接
因为想要实现模糊查询,因为原因如上面一样,映射多,不然直接在调用Mapper接口的时候拼接了就不会有那么多事了
不多说了直接上代码

and toWhoId like  CONCAT(CONCAT('%', #{toWhoId}), '%')


其实办法还有很多 ,我是觉得上面的方法不错,比较直观,有更好的话,各位大佬帮忙在评论指出哦

Sql数据类型转换

int转varchar

123+‘’
CAST(123 AS CHAR);

varchari转int

CONVERT(#{item},SIGNED)
CONVERT(‘67’,SIGNED);


总结

好好对每一个坑都做好笔记,就会越来越好。

猜你喜欢

转载自blog.csdn.net/weixin_43691773/article/details/108905752