com.github.abel533.mapper插件使用报错,求助!!!

    xiaoxiao2022-07-05  204

    小白求帮助!!!!!!!

    问题概述

        第一次使用springboot搭建了一个项目,使用dubbo+zk做分布式,前台子系统调用后台服务,运行成功,但是调用时出错,大概问题出在mapper,使用了com.github.abel533的mapper插件,写了mapperProvider,报错没有无参构造方法,怀疑各个插件版本有问题,调试后无果,希望有大神协助,感谢!!!!

     

    POM配置


    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ec</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> <name>parent</name> <packaging>pom</packaging> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> <mapper.version>2.3.2</mapper.version> <!--<mapper.version>3.0.1</mapper.version>--> <dubbo.starter.version>2.0.0</dubbo.starter.version> <!--<dubbo.starter.version>1.0.0</dubbo.starter.version>--> <dubbo.version>2.5.3</dubbo.version> <zkclient.version>0.10</zkclient.version> <druid.version>1.0.28</druid.version> <pagehelper.version>3.4.2</pagehelper.version> <jsqlparser.version>0.9.1</jsqlparser.version> <!--<pagehelper.version>4.1.1</pagehelper.version>--> <!--<jsqlparser.version>0.9.4</jsqlparser.version>--> </properties> <dependencies> <!-- spring-boot-starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- spring-boot-starter-test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- spring-boot-starter-amqp --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!-- spring-boot-starter-data-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- spring-boot-starter-data-solr --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-solr</artifactId> </dependency> <!-- spring-boot-starter-data-jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- ********************************************* --> <!--引入阿里druid监控 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- dubbo --> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo.starter.version}</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>${zkclient.version}</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <!-- 通用Mapper --> <dependency> <groupId>com.github.abel533</groupId> <artifactId>mapper</artifactId> <version>${mapper.version}</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.1.3</version> </dependency> <!-- jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <!-- 时间操作组件 --> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <!--<version>${joda-time.version}</version>--> </dependency> <!-- 定时任务 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <!--定时任务需要依赖c3p0jar包 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> </plugins> </build> </project>

    依赖版本

    MapperProvider代码

    package com.ec.common.mapper; import com.github.abel533.mapper.MapperProvider; import com.github.abel533.mapperhelper.EntityHelper; import com.github.abel533.mapperhelper.MapperHelper; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.scripting.xmltags.ForEachSqlNode; import org.apache.ibatis.scripting.xmltags.MixedSqlNode; import org.apache.ibatis.scripting.xmltags.SqlNode; import org.apache.ibatis.scripting.xmltags.StaticTextSqlNode; import org.apache.ibatis.jdbc.SQL; import java.util.ArrayList; import java.util.List; import java.util.Set; //import static org.apache.ibatis.jdbc.SqlBuilder.*; public class SysMapperProvider extends MapperProvider { // public SysMapperProvider(){ // super(); // // } public SysMapperProvider(Class<?> mapperClass, MapperHelper mapperHelper) { super(mapperClass, mapperHelper); } //这些方法 就是为了生成sql语句 /** * 参数说明: * SqlNode:mybatis提供一个sql语句的载体. * 通过sqlNode对象包含sql语句.则最终执行时提取sql * MappedStatement:mybatis提供的内置对象 * 通过对象可以灵活的获取当前正在执行的方法的具体参数和路径 * * @param ms * @return */ public SqlNode deleteByIDS(MappedStatement ms) { Class<?> entityClass = getSelectReturnType(ms); Set<EntityHelper.EntityColumn> entityColumns = EntityHelper.getPKColumns(entityClass); EntityHelper.EntityColumn column = null; for (EntityHelper.EntityColumn entityColumn : entityColumns) { column = entityColumn; break; } List<SqlNode> sqlNodes = new ArrayList<SqlNode>(); // 开始拼sql // BEGIN(); // delete from table // DELETE_FROM(tableName(entityClass)); // 得到sql String sql =new SQL(){ { DELETE_FROM(tableName(entityClass)); } }.toString(); // 静态SQL部分 sqlNodes.add(new StaticTextSqlNode(sql + " WHERE " + column.getColumn() + " IN ")); // 构造foreach sql SqlNode foreach = new ForEachSqlNode(ms.getConfiguration(), new StaticTextSqlNode("#{" + column.getProperty() + "}"), "ids", "index", column.getProperty(), "(", ")", ","); sqlNodes.add(foreach); return new MixedSqlNode(sqlNodes); } }

    报错内容

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (com.ec.common.mapper.SysMapperProvider.dynamicSQL). Cause: java.lang.InstantiationException: com.ec.common.mapper.SysMapperProvider at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77) ~[mybatis-spring-1.3.1.jar:1.3.1] at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446) ~[mybatis-spring-1.3.1.jar:1.3.1] at com.sun.proxy.$Proxy79.selectList(Unknown Source) ~[na:na] at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230) ~[mybatis-spring-1.3.1.jar:1.3.1] at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137) ~[mybatis-3.4.5.jar:3.4.5] at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) ~[mybatis-3.4.5.jar:3.4.5] at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) ~[mybatis-3.4.5.jar:3.4.5] at com.sun.proxy.$Proxy80.select(Unknown Source) ~[na:na] at com.ec.api.cart.service.CartServiceImpl.findCartListByUserId(CartServiceImpl.java:25) ~[classes/:na] at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java) ~[dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:45) ~[dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:71) ~[dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.config.invoker.DelegateProviderMetaDataInvoker.invoke(DelegateProviderMetaDataInvoker.java:48) ~[dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:52) ~[dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:61) ~[dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:74) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:41) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:77) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:71) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:131) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:37) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:37) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:68) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:98) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:96) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:168) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:50) [dubbo-2.6.0.jar:2.6.0] at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:79) [dubbo-2.6.0.jar:2.6.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181] Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (com.ec.common.mapper.SysMapperProvider.dynamicSQL). Cause: java.lang.InstantiationException: com.ec.common.mapper.SysMapperProvider at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:135) ~[mybatis-3.4.5.jar:3.4.5] at org.apache.ibatis.builder.annotation.ProviderSqlSource.getBoundSql(ProviderSqlSource.java:103) ~[mybatis-3.4.5.jar:3.4.5] at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292) ~[mybatis-3.4.5.jar:3.4.5] at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:83) ~[pagehelper-5.0.4.jar:na] at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.4.5.jar:3.4.5] at com.sun.proxy.$Proxy114.query(Unknown Source) ~[na:na] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ~[mybatis-3.4.5.jar:3.4.5] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.5.jar:3.4.5] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181] at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) ~[mybatis-spring-1.3.1.jar:1.3.1] ... 36 common frames omitted Caused by: java.lang.InstantiationException: com.ec.common.mapper.SysMapperProvider at java.lang.Class.newInstance(Class.java:427) ~[na:1.8.0_181] at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:117) ~[mybatis-3.4.5.jar:3.4.5] ... 48 common frames omitted Caused by: java.lang.NoSuchMethodException: com.ec.common.mapper.SysMapperProvider.<init>() at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_181] at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_181] ... 49 common frames omitted

     

    最新回复(0)