广告
返回顶部
首页 > 资讯 > 后端开发 > Python >解决tk.mybatis中写自定义的mapper的问题
  • 882
分享到

解决tk.mybatis中写自定义的mapper的问题

2024-04-02 19:04:59 882人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

问题 使用tk.mybatis能满足大多数操作,但是想添加自己的查询方法时候今天遇到了坑,总结一下 官方教程 大致分两种 1. 使用纯接口注解方式时 在mapper接口中自定义方法上

问题

使用tk.mybatis能满足大多数操作,但是想添加自己的查询方法时候今天遇到了坑,总结一下

官方教程

大致分两种

1. 使用纯接口注解方式时

在mapper接口中自定义方法上添加如@Select,@insert类似的注释,里边写相应的sql语句,如下


import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
public interface CountryMapper extends Mapper<Country> {
    @Select("select * from country where countryname = #{countryname}")
    Country selectByCountryName(String countryname);
}

这种方式没有问题

2. 如果使用 XML 方式,需要提供接口对应的 XML 文件

例如提供了 CountryMapper.xml 文件,内容如下:


<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "Http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tk.mybatis.sample.mapper.CountryMapper">
    <select id="selectByCountryName" resultType="tk.mybatis.model.Country">
        select * from country where countryname = #{countryname}
    </select>
</mapper>

这里会有点问题

注意: resultType 如果映射的是个实体类最好写 包的全路径名 如tk.mybatis.model.Country 如果写 Country会报错,导致项目无法启动。

tk mapper 通用mapper的bug


<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.isea533.mybatis.mapper"/>
            <property name="properties">
                <value>
                    mappers=tk.mybatis.mapper.common.Mapper
                </value>
            </property>
        </bean>

basePackage的属性值 不能包含通用mapper所在的包


Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2018-03-14 12:39:21.741 ERROR [main] [hio-sys] o.s.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tk.mybatis.mapper.autoconfigure.MapperAutoConfiguration': Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'baseMapper' defined in file []: 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
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanReGIStry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:543)
    at org.springframework.context.support.AbstractApplicationContext.jrLockAndRefresh(AbstractApplicationContext.java)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java)
    at org.springframework.boot.context.embedded.EmbeddedWEBApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
    at com.jzy.hio.HiOSysApplication.main(HioSysApplication.java:35)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'baseMapper' defined in file [C:\Users\coffee\OneDrive\workspace\v2r1-hio-base\target\classes\com\jzy\hio\base\mapper\BaseMapper.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
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType_jrOrig(DefaultListableBeanFactory.java:519)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType_jrOrig(DefaultListableBeanFactory.java:508)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java)
    at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1188)
    at tk.mybatis.mapper.autoconfigure.MapperAutoConfiguration.addPageInterceptor(MapperAutoConfiguration.java:71)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
    ... 18 common frames omitted
Caused by: tk.mybatis.mapper.MapperException: tk.mybatis.mapper.MapperException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at tk.mybatis.mapper.mapperhelper.MapperHelper.setSqlSource(MapperHelper.java:248)
    at tk.mybatis.mapper.mapperhelper.MapperHelper.processConfiguration(MapperHelper.java:311)
    at tk.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:54)
    at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
    ... 39 common frames omitted
Caused by: tk.mybatis.mapper.MapperException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at tk.mybatis.mapper.mapperhelper.MapperTemplate.setSqlSource(MapperTemplate.java:258)
    at tk.mybatis.mapper.mapperhelper.MapperHelper.setSqlSource(MapperHelper.java:245)
    ... 44 common frames omitted
Caused by: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at tk.mybatis.mapper.mapperhelper.MapperTemplate.getEntityClass(MapperTemplate.java:290)
    at tk.mybatis.mapper.provider.base.BaseSelectProvider.selectOne(BaseSelectProvider.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at tk.mybatis.mapper.mapperhelper.MapperTemplate.setSqlSource(MapperTemplate.java:246)
    ... 45 common frames omitted

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 解决tk.mybatis中写自定义的mapper的问题

本文链接: https://www.lsjlt.com/news/128071.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解决tk.mybatis中写自定义的mapper的问题
    问题 使用tk.mybatis能满足大多数操作,但是想添加自己的查询方法时候今天遇到了坑,总结一下 官方教程 大致分两种 1. 使用纯接口注解方式时 在mapper接口中自定义方法上...
    99+
    2022-11-12
  • 解决tk mapper 通用mapper的bug问题
    如下所示: <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> &...
    99+
    2022-11-12
  • 解决mybatis中的mapper命名问题
    mybatis mapper命名问题 mapper文件中id命名最好首字母小写,避免让mybatis认为是一个类 <!--获取供应商列表--> <...
    99+
    2022-11-12
  • 解决Mybatis中mapper的ID冲突问题
    mapper 的id冲突原因: 原因一: 在同一个mapper.xml中存在相同的ID 原因二: 同时使用了xml配置和注解配置 解决方案: 只保留xml或者注解即可!!! Myb...
    99+
    2022-11-12
  • 怎么解决mybatis中的mapper命名问题
    这篇文章主要介绍了怎么解决mybatis中的mapper命名问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mybatis mapper命名问题mapper文件中id命名最...
    99+
    2023-06-15
  • 如何解决SpringSecurity自定义AuthenticationProvider无法@Autowire的问题
    这篇文章主要介绍了如何解决SpringSecurity自定义AuthenticationProvider无法@Autowire的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一...
    99+
    2023-06-22
  • Mybatis中自定义实例化SqlSessionFactoryBean问题怎么解决
    本篇内容介绍了“Mybatis中自定义实例化SqlSessionFactoryBean问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2023-07-05
  • mapper的对象传参问题如何解决
    如果您指的是在Python中使用`mapper`对象时的参数传递问题,可以使用以下两种方式解决:1. 使用`mapper`对象的`c...
    99+
    2023-10-12
    mapper
  • SpringBoot多数据源读写分离的自定义配置问题及解决方法
    目录针对device库我们先创建一个数据库连接配置类在类中添加配置文件中的读写数据源创建返回SqlSessionFactory的Bean创建SqlSessionTemplate的Be...
    99+
    2022-11-13
  • 解决python3中自定义wsgi函数,make_server函数报错的问题
    #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_response): ...
    99+
    2022-06-04
    函数 自定义 报错
  • keras.layers.Layer中无法定义name的问题及解决
    目录keras.layers.Layer中无法定义name问题会发生相应的报错如果我们将对应的内容改为如下具体的例子如下总结keras.layers.Layer中无法定义name问题...
    99+
    2023-02-21
    keras.layers.Layer 无法定义name keras.layers.Layer定义name
  • MyBatis中Mapper的注入问题详解
    在 SpringBoot 体系中,MyBatis 对 Mapper 的注入常见的方式我知道的有 2 种: 1、@MapperScan MapperScan 类是 mybatis-sp...
    99+
    2022-11-12
  • vue自定义keepalive组件的问题解析
    目录vue自定义keepalive组件为什么会出现这种情况呢如何解决这个问题呢问题知道了怎么解决呢思路有了撸代码如何使用主题说完了,整点其他的vue自定义keepalive组件 前一...
    99+
    2022-11-13
  • iOS自定义字体显示问题的完美解决方法
    前言 本篇文章讲的是在实际项目中碰到一款自定义字体在展示上出现问题,然后运用先进的苹果爸爸的工具来解决这个问题的故事。 下面话不多说了,来一起看看详细的介绍吧 1. 自定义字体出什...
    99+
    2022-05-25
    ios 自定义 字体
  • web开发中如何解决自定义事件解决重复请求BUG的问题
    这篇文章将为大家详细讲解有关web开发中如何解决自定义事件解决重复请求BUG的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。BUG的背景最近在开发一个组件,好不容易开...
    99+
    2022-10-19
  • 微信小程序自定义tabbar问题怎么解决
    这篇文章主要介绍“微信小程序自定义tabbar问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序自定义tabbar问题怎么解决”文章能帮助大家解决问题。1、首先按照官方组件在app...
    99+
    2023-06-29
  • pyspark自定义UDAF函数调用报错问题解决
    目录问题场景:问题描述原因分析及解决方案:问题场景: 在SparkSQL中,因为需要用到自定义的UDAF函数,所以用pyspark自定义了一个,但是遇到了一个问题,就是自定义的UDA...
    99+
    2022-11-11
  • spring注解在自定义jar包中无法被扫描的问题如何解决
    这篇文章主要介绍“spring注解在自定义jar包中无法被扫描的问题如何解决”,在日常操作中,相信很多人在spring注解在自定义jar包中无法被扫描的问题如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-20
  • 怎么解决Pytorch 自定义子Module .cuda() tensor失败问题
    不懂怎么解决Pytorch 自定义子Module .cuda() tensor失败问题?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。在刚从tensorflow转入pytorch,对于自定...
    99+
    2023-05-30
  • workerman怎么自定义协议解决粘包拆包问题
    这篇“workerman怎么自定义协议解决粘包拆包问题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“workerman怎么自...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作