MyBatis下标越界异常解决
MyBatis下标越界异常解决
当实体类中的属性存在了数据库中不存在的字段时,执行该实体类相关的mapper会报出下标越界异常(IndexOutBoundException)。集合除外。
问题出现原因:
使用Spring Security过程中,新建一个实体类并实现Spring Security提供的UserDetails接口,然后实现该接口下的所有方法(全部是getXXX())。
如下面代码所示:
public class TestUserDetails implements UserDetails {@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic String getPassword() {throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic String getUsername() {throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic boolean isAccountNonExpired() {throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic boolean isAccountNonLocked() {throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic boolean isCredentialsNonExpired() {throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic boolean isEnabled() {throw new UnsupportedOperationException("Not yet implemented");}
}
由上可知,分别需要username、password、accountNonExpired、accountNonLocked、credentialsNonExpired、enabled属性以及authorities集合。
另外需要自己写getXX()方法,提供使用
在demo中,数据库中表的字段只有username、password、enabled。这样会导致实体类中的属性存在了数据表中不存在的字段,在执行Spring Security提供的接口UserDetailsService中的loadUserByUsername(String userName)时就会出现IndexOutBoundException异常。
而且在Spring Security执行登录验证的时候会检查实现了UserDetails的实现类中的isXXX() 的几个方法的返回值,isAccountNonExpired()代表账户是否过期、isAccountNonLocked()代表账户是否被锁定、isCredentialsNonExpired()代表验证是否过期,这几个方法必须有且
有返回值。否则登录不成功。
综上所述的解决办法是 删除多余的属性,并且将几个isXXX()方法的返回值return true;这样效果等同于屏蔽了对账户的判断。
MyBatis下标越界异常解决相关推荐
- 数组下标越界异常解决方法
数组下标越界异常解决方法 参考文章: (1)数组下标越界异常解决方法 (2)https://www.cnblogs.com/GreenCode/p/7345508.html 备忘一下.
- 如何解决数组下标越界异常
如何解决数组下标越界异常 今天在写接口的时候运行发现有一个数组的下标越界异常了, 检查了一下发现实在上面的数组中有一些字符串没有大写,造成跟下面的数组字符串不一样,所以导致了数组下标越界异常.
- Mybatis注解开发出现Type interface Mapper.StudentMapper is not known to the MapperRegistry异常解决办法
Mybatis注解开发出现Type interface Mapper.StudentMapper is not known to the MapperRegistry异常解决办法 在核心配置文件中,配 ...
- ArrayIndexOutOfBoundsException数组下标越界异常的解决过程
一. 异常示例 对于刚开始学习Java的大部分人来说,在使用数组的过程中,经常会遇到数组下标越界的异常.下面壹哥就以一个实际案例来给大家进行说明: public class ArrayTest {pu ...
- Mybatis异常解决
Mybatis异常解决 Mapped Statements collection does not contain value for - 一定是这四步: mybatis的映射文件的命令空间与接口的全 ...
- Java初学最容易犯的错,数组下标越界异常怎么解决呢?
数组下标越界是一个编程初学者最容易犯的错误. 以一个简单的一维数组为例: int a[10]:这是一个整型的数组a,有10个元素:a[0]-a[9],因为正确的下标应该是从0开始,到9结束,与生活习惯 ...
- JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
测试又报bug啦 接到测试小伙伴的问题,说是一个接口不返回数据了,好吧,虽然不是我写的接口任务落到头上也得解决,本地调试了一下,好家伙,直接抛了个异常出来,这又是哪位大哥喝醉了写的代码... Exce ...
- WEB站点使用企业库安全性异常解决办法
WEB站点使用企业库安全性异常解决办法 我们在WEB站点使用企业库的时候,有时候会有如下的异常产生: 安全性异常 说明: 应用程序试图执行安全策略不允许的操作.要授予此应用程序所需的权限,请与 ...
- 记录一次cefsharp1输入法在win7下异常解决定位
最近几天都被基于cefSharp封装的浏览器控件搞疯了!对于cefSharp基本满足当前所做项目的需求,但是有一个问题一直困扰我,那就是系统中偶尔会出现输入法不能转换到中文.而且这个问题似乎没有什么规 ...
最新文章
- Pandas选择一列或者多列数据
- 31天重构学习笔记3. 提升方法
- 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
- android客户端访问服务端,服务端返回json数据
- css input光标粗细,如何用CSS原生属性caret-color改变input输入框光标颜色
- 嵊州D5T2 折纸 folding
- php开发客服系统(持久连接+轮询+反向ajax)
- ACM题目————STL练习之众数问题
- 十大最热门人工智能技术
- 非IE浏览器实现IE功能(浏览器加载OCX控件)——IE Tab
- 一完整的HTTP事务是怎样的过程
- c盘太小想扩容,合并硬盘分区的方法,硬盘合并分区的步骤
- php中判断是否为偶数,在PHP中检查偶数和奇数
- Python之列表(学习笔记)
- 3D模型欣赏:大眼短发战斗萝莉 游戏角色
- table数据刷新;v-if刷新el-table表格
- 书蕴——基于书评的人工智能推荐系统
- matlab ezplot fplot,[求助]fplot和ezplot功能一样啊?
- linux telnet成功显示什么_一文带你彻底理解 Linux 的各种终端类型及概念
- 在CSS布局中让Floats轻拂