文章目录
- 前言
- 一、MyBatis遍历字符串
- 二、在MyBatis使用特殊符号
- Sql数据类型转换
-
- int转varchar
- varchari转int
- 总结
前言
这两天打代码在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);
总结
好好对每一个坑都做好笔记,就会越来越好。