Mybatis 使用注解@TableField(exist = false) 时,出现角标越界异常IndexOutOfBoundsException的根本原因

在设计数据库表的封装类时,在某字段上加

上注解@TableField(exist = false) 表示表中不包含这个字段,但是在做CRUD时,却出现了角标越界异常IndexOutOfBoundsException,原代码如下:

//封装数据库数据。
@AllArgsConstructor
@Data
@TableName("userlogin")
public class UserLogin {

    @TableId
    @TableField(value = "uid")
    @ApiModelProperty("ID")
    private Integer uid;

    @ApiModelProperty("用户名")
    private String username;

    @ApiModelProperty("密码")
    private String password;

    @TableField(exist = false)
    private String token;

}
==>  Preparing: SELECT uid,username,password FROM userlogin WHERE (username = ? AND password = ?)
==> Parameters: zhangsan(String), 123456(String)
<==    Columns: uid, username, password
<==        Row: 2, zhangsan, 123456
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1c848110]
2022-07-21 21:09:55.378 ERROR 9188 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
### The error may exist in com/xhcoder/mapper/UserLoginMapper.java (best guess)
### The error may involve com.xhcoder.mapper.UserLoginMapper.selectOne
### The error occurred while handling results
### SQL: SELECT  uid,username,password  FROM userlogin     WHERE (username = ? AND password = ?)
### Cause: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3] with root cause

经过检查,发现是因为标注了 @AllargsConstructor。注释掉就可以了。

JDBC Connection [HikariProxyConnection@1420380651 wrapping com.mysql.jdbc.JDBC4Connection@7f5d6cce] will not be managed by Spring
==>  Preparing: SELECT uid,username,password FROM userlogin WHERE (username = ? AND password = ?)
==> Parameters: zhangsan(String), 123456(String)
<==    Columns: uid, username, password
<==        Row: 2, zhangsan, 123456
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1ca8a8d7]

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值