ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringBoot 配置tk.mybatis 的异常问题

2021-08-20 18:32:15  阅读:212  来源: 互联网

标签:lang mapper java SpringBoot BaseDao tk mybatis


SpringBoot 和 tk.mybatis 

 

 

 

 

 

 

其余的问题转至 https://blog.csdn.net/suzhenchao/article/details/8947108;

 

主要解决springboot项目引入通用mapper(tk.mybatis.mapper)的时候一些可能会踩的坑:诸如tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()

java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class

 

通用mapper
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;


public interface BaseDao<T> extends Mapper<T>, MySqlMapper<T>{
}

pom 文件添加 Maven 的依赖 (同时要注意有没有冲突)
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
yml配置加上通用mapper路径(我的通用mapper叫BaseDao)
mapper:
mappers: cn.hy.hyerp.erp.common.dal.BaseDao
not-empty: false
identity: mysql
启动类引入的@MapperScan 引入的是import tk.mybatis.spring.annotation.MapperScan;
启动而不是import org.mybatis.spring.annotation.MapperScan;​​​​​​不然会报错:

Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider] with root cause
java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()

 

(这里注解下)

比分说我的BaseDao包在这个路径

 

 

 

 

 

@MapperScan里的basePackage不能包含通用mapper(我的是BaseDao)的路径,只包含其他的mapper的路径,不然会报错:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'baseDao' defined in file [BaseDao.class]: Invocation of init method failed;

nested exception is tk.mybatis.mapper.MapperException: tk.mybatis.mapper.MapperException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class

 

使用BaseDao的方法如果SQL语句报错,注意在自己生成的entity里面加上@Table 和 @Column 标识entity对应的表名和字段名;通用mapper默认是将驼峰结构的字段转化为下划线的结构,如调.selectAll()方法时,personType会默认转为
person_type,如果跟数据表的字段不对应会报错。如我在数据表的字段名为personType时,加上注解就行。
@Column(name = "personType")
private Boolean personType;

 

标签:lang,mapper,java,SpringBoot,BaseDao,tk,mybatis
来源: https://www.cnblogs.com/ztqbky/p/15167689.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有