在操作数据库时,出现了类型转化异常
我的实体类
/**
* <p>
* 操作日志表
* </p>
*
* @author tangxiang
* @since 2023-09-11
*/
@Builder
@Data
@TableName(value = "sys_log", autoResultMap = true)
public class SysLogDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 模块编码
*/
private String moduleCode;
/**
* 模块名称
*/
private String moduleName;
/**
* 操作类型
*/
private String methodType;
/**
* 请求方法
*/
private String requestMethod;
/**
* ip地址
*/
private String ip;
/**
* 是否成功
*/
private Byte successFlag;
/**
* uri
*/
private String requestUri;
/**
* 操作方法,全限定名+方法名
*/
private String methodName;
/**
* 方法参数
*/
private String requestParam;
/**
* 返回参数
*/
private String returnObj;
/**
* 错误信息
*/
private String errorMsg;
/**
* 创建人
*/
private Long createBy;
/**
* 修改人
*/
private Long updateBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 是否删除0未删除,1已删除
*/
private Byte delFlag;
}
查询代码
LambdaQueryWrapper<SysLogDO> wrapper = Wrappers.lambdaQuery(SysLogDO.class);
wrapper.eq(SysLogDO::getDelFlag, DelFlagEnum.FALSE.getFlag());
wrapper.select(SysLogDO::getModuleCode, SysLogDO::getMethodType);
List<SysLogDO> sysLogDOS = baseMapper.selectList(wrapper);
明明都是string类型,保存的时候没有问题,查询的时候缺出现了类型异常
报错信息是转化int
但是我的类型是String类型
debug到最开始,转int处
org.apache.ibatis.type.BaseTypeHandler#getResult(java.sql.ResultSet, java.lang.String)
这个BaseTypeHandler类型是Integer
继续查看这个handler哪里来的
从构造方法的第一个参数类型来的,所以 id 的类型是Integer,所以会出现类型转化异常。
删除wrapper.select(SysLogDO::getModuleCode, SysLogDO::getMethodType);即可
这个算是mybatis-plus的bug吗下面是版本号
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>