关于写SpringBoot+Mybatisplus+Shiro项目的经验分享三:问题2

框架: 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集合

 再输入 "男" 时就不会报错了

 

posted @ 2020-06-11 15:26  LonZyuan  阅读(263)  评论(0编辑  收藏  举报