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

框架: SpringBoot+Mybatisplus+Shiro

  简单介绍:关于写SpringBoot+Mybatisplus+Shiro项目的经验分享一:简单介绍

搜索框是该项目重要的一环,由于涉及模糊查询、类型判断、参数转化等比较麻烦,所以异常也多

一、通过Object类型的条件无法正确判断类型

搜索时传参的表单

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

Controller:得到Object类型的条件 condition

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

Service实现类进行类型判断

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

而我无论在页面输入什么值,控制台打印的始终是 22222

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

这个问题就很明显了,因为 <input type="text"> 传入的都是字符,因此怎么判断都是String

二、枚举类型的判断总是出问题

我的Gender属性,使用的是枚举类型,所以在传过来时,判断也是最麻烦的

第一次判断,把他转为String类型再判断是否为 男女

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

结果很意外,既不是男又不是女,根本没有判断成功

于是我想到可能是本来condition就是String类型,只是无法与字符串比较

那突破点就是需要他真正的String属性来判断

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

所以我想到通过其中的属性 msg来比较

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

不过这里又出了问题,因为Object类型的condition,无法get到msg

突然想到做过一道面试题,比较  "==" 与 equals 的区别,而这个问题可能就出在这里

equals是比较2个独立的对象的内容是否相同,而 "==" 是比较2个变量值的不同

所以,我再次修改

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

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

终于判断成功了

这个经验教训比较深刻,也算是强化了认识 "==" 与 equals 的区别。

三、查询的时候,有时候行,有时候会报异常

最多的异常是:

  org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 19

意思很明确,就是查询出来的 结果太多了,再看看打印出来的Sql语句

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

这是我输入的条件为  "男" 时所出的,可以知道,确实是查到了,所以问题就是结果没有用集合装载

使用List集合

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

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

上一篇:关于sql server2008数据库的连接的几个问题及解决办法


下一篇:强制不使用“兼容性视图”的HTML代码(转)