zoukankan      html  css  js  c++  java
  • springboot项目引入通用mapper(tk.mybatis.mapper)的时候一些可能会踩的坑

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

    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 extends Mapper, MySqlMapper{
      }
    • pom 文件添加 Maven 的依赖 (同时要注意有没有冲突)
    
         tk.mybatis
         mapper-spring-boot-starter
         2.0.0
    
    • 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.()

    • @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;
  • 相关阅读:
    Kubernetes Conditions
    自动造数据利器,Faker 了解一下?
    2021年软件测试工具大全(自动化、接口、性能、安全、测试管理)
    低代码开发,推荐一款Web 端自动化神器:Automa
    自动化测试常见问题总结!(适合新手团队)
    Java 将PPT转为OFD E
    Java 将PDF转为线性PDF E
    C# 将Excel转为PDF时自定义表格纸张大小 E
    C# / VB.NET 在Word中嵌入多媒体(视频、音频)文件 E
    C# 扫描识别图片中的文字(.NET Framework) E
  • 原文地址:https://www.cnblogs.com/youqc/p/14472416.html
Copyright © 2011-2022 走看看