框架: SpringBoot+Mybatisplus+Shiro
简单介绍:关于写SpringBoot+Mybatisplus+Shiro项目的经验分享一:简单介绍
搜索框是该项目重要的一环,由于涉及模糊查询、类型判断、参数转化等比较麻烦,所以异常也多
一、通过Object类型的条件无法正确判断类型
搜索时传参的表单
Controller:得到Object类型的条件 condition
Service实现类进行类型判断
而我无论在页面输入什么值,控制台打印的始终是 22222
这个问题就很明显了,因为 <input type="text"> 传入的都是字符,因此怎么判断都是String
二、枚举类型的判断总是出问题
我的Gender属性,使用的是枚举类型,所以在传过来时,判断也是最麻烦的
第一次判断,把他转为String类型再判断是否为 男女
结果很意外,既不是男又不是女,根本没有判断成功
于是我想到可能是本来condition就是String类型,只是无法与字符串比较
那突破点就是需要他真正的String属性来判断
所以我想到通过其中的属性 msg来比较
不过这里又出了问题,因为Object类型的condition,无法get到msg
突然想到做过一道面试题,比较 "==" 与 equals 的区别,而这个问题可能就出在这里
equals是比较2个独立的对象的内容是否相同,而 "==" 是比较2个变量值的不同
所以,我再次修改
终于判断成功了
这个经验教训比较深刻,也算是强化了认识 "==" 与 equals 的区别。
三、查询的时候,有时候行,有时候会报异常
最多的异常是:
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 19
意思很明确,就是查询出来的 结果太多了,再看看打印出来的Sql语句
这是我输入的条件为 "男" 时所出的,可以知道,确实是查到了,所以问题就是结果没有用集合装载
使用List集合
再输入 "男" 时就不会报错了