tk.mybatis相关注解使用错误

2019-04-11 18:38:01.201 [ERROR] c.d.d.j.e.handler.impl.DefaultJobExceptionHandler - Job 'bops.feima.task.task.OrderSycForHourJob' exception occur in job processing

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)

at com.sun.proxy.$Proxy152.selectList(Unknown Source)

at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)

at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)

at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)

at com.sun.proxy.$Proxy157.selectAll(Unknown Source)

at bops.feima.task.service.impl.OrderSycServiceImpl.getMediaAccountMap(OrderSycServiceImpl.java:71)

at bops.feima.task.service.impl.OrderSycServiceImpl.OrderSycForHour(OrderSycServiceImpl.java:195)

at bops.feima.task.task.OrderSycForHourJob.execute(OrderSycForHourJob.java:31)

at com.dangdang.ddframe.job.executor.type.SimpleJobExecutor.process(SimpleJobExecutor.java:41)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.process(AbstractElasticJobExecutor.java:206)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.access$000(AbstractElasticJobExecutor.java:47)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor$1.run(AbstractElasticJobExecutor.java:185)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:117)

at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:38)

at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:135)

at org.apache.ibatis.builder.annotation.ProviderSqlSource.getBoundSql(ProviderSqlSource.java:103)

at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292)

at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)

at com.github.pagehelper.SqlUtil._processPage(SqlUtil.java:402)

at com.github.pagehelper.SqlUtil.processPage(SqlUtil.java:375)

at com.github.pagehelper.PageHelper.intercept(PageHelper.java:252)

at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)

at com.sun.proxy.$Proxy211.query(Unknown Source)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)

... 20 common frames omitted

Caused by: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at java.lang.Class.newInstance(Class.java:427)

at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:117)

... 40 common frames omitted

Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()

at java.lang.Class.getConstructor0(Class.java:3082)

at java.lang.Class.newInstance(Class.java:412)

... 41 common frames omitted

2019-04-11 18:38:01.201 [ERROR] c.d.d.j.e.handler.impl.DefaultJobExceptionHandler - Job 'bops.feima.task.task.OrderSycForHourJob' exception occur in job processing

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)

at com.sun.proxy.$Proxy152.selectList(Unknown Source)

at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)

at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)

at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)

at com.sun.proxy.$Proxy157.selectAll(Unknown Source)

at bops.feima.task.service.impl.OrderSycServiceImpl.getMediaAccountMap(OrderSycServiceImpl.java:71)

at bops.feima.task.service.impl.OrderSycServiceImpl.OrderSycForHour(OrderSycServiceImpl.java:195)

at bops.feima.task.task.OrderSycForHourJob.execute(OrderSycForHourJob.java:31)

at com.dangdang.ddframe.job.executor.type.SimpleJobExecutor.process(SimpleJobExecutor.java:41)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.process(AbstractElasticJobExecutor.java:206)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.access$000(AbstractElasticJobExecutor.java:47)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor$1.run(AbstractElasticJobExecutor.java:185)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:117)

at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:38)

at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:135)

at org.apache.ibatis.builder.annotation.ProviderSqlSource.getBoundSql(ProviderSqlSource.java:103)

at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292)

at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)

at com.github.pagehelper.SqlUtil._processPage(SqlUtil.java:402)

at com.github.pagehelper.SqlUtil.processPage(SqlUtil.java:375)

at com.github.pagehelper.PageHelper.intercept(PageHelper.java:252)

at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)

at com.sun.proxy.$Proxy211.query(Unknown Source)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)

... 20 common frames omitted

Caused by: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at java.lang.Class.newInstance(Class.java:427)

at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:117)

... 40 common frames omitted

Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()

at java.lang.Class.getConstructor0(Class.java:3082)

at java.lang.Class.newInstance(Class.java:412)

... 41 common frames omitted

2019-04-11 18:38:01.201 [ERROR] c.d.d.j.e.handler.impl.DefaultJobExceptionHandler - Job 'bops.feima.task.task.OrderSycForHourJob' exception occur in job processing

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)

at com.sun.proxy.$Proxy152.selectList(Unknown Source)

at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)

at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)

at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)

at com.sun.proxy.$Proxy157.selectAll(Unknown Source)

at bops.feima.task.service.impl.OrderSycServiceImpl.getMediaAccountMap(OrderSycServiceImpl.java:71)

at bops.feima.task.service.impl.OrderSycServiceImpl.OrderSycForHour(OrderSycServiceImpl.java:195)

at bops.feima.task.task.OrderSycForHourJob.execute(OrderSycForHourJob.java:31)

at com.dangdang.ddframe.job.executor.type.SimpleJobExecutor.process(SimpleJobExecutor.java:41)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.process(AbstractElasticJobExecutor.java:206)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.access$000(AbstractElasticJobExecutor.java:47)

at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor$1.run(AbstractElasticJobExecutor.java:185)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:117)

at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:38)

at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseSelectProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:135)

at org.apache.ibatis.builder.annotation.ProviderSqlSource.getBoundSql(ProviderSqlSource.java:103)

at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292)

at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)

at com.github.pagehelper.SqlUtil._processPage(SqlUtil.java:402)

at com.github.pagehelper.SqlUtil.processPage(SqlUtil.java:375)

at com.github.pagehelper.PageHelper.intercept(PageHelper.java:252)

at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)

at com.sun.proxy.$Proxy211.query(Unknown Source)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)

... 20 common frames omitted

Caused by: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider

at java.lang.Class.newInstance(Class.java:427)

at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:117)

... 40 common frames omitted

Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()

at java.lang.Class.getConstructor0(Class.java:3082)

at java.lang.Class.newInstance(Class.java:412)

... 41 common frames omitted

2019-04-11 18:38:12.672 [INFO ] com.netflix.config.ChainedDynamicProperty - Flipping property: bops-time-task.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647

 

问题:启动类的@MapperScan(basePackages = "xxx.xxx.xxx.mapper") 注解导包错误

 

解决:

把import org.mybatis.spring.annotation.MapperScan;

换成import tk.mybatis.spring.annotation.MapperScan;

 

使用 tk.mybatis 框架时,可以通过使用 @Column 注解来处理 JSON 字段。@Column 注解tk.mybatis 提供的一个用于指定数据库表字段的注解,可以用于指定字段名、类型、长度等属性。 对于 JSON 类型的字段,可以使用 @Column 注解的 type 属性来指定数据库字段的类型为 JSON。例如: ```java @Column(name = "json_field", type = "json") private String jsonField; ``` 在上述示例中,`jsonField` 字段被标记为 JSON 类型,对应的数据库字段名为 `json_field`。 此外,如果你想要在使用 tk.mybatis 时自动将 JSON 字符串转换为对象,可以使用 tk.mybatis 的自定义类型处理器(TypeHandler)来实现。你可以创建一个继承自 tk.mybatis.mapper.common.BaseTypeHandler<T> 的类型处理器,并在其中实现 JSON 字符串与对象之间的转换逻辑。 以下是一个示例: ```java @MappedTypes(value = YourJsonClass.class) public class JsonTypeHandler extends BaseTypeHandler<YourJsonClass> { private final ObjectMapper objectMapper; public JsonTypeHandler() { objectMapper = new ObjectMapper(); } @Override public void setNonNullParameter(PreparedStatement ps, int i, YourJsonClass parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, objectMapper.writeValueAsString(parameter)); } @Override public YourJsonClass getNullableResult(ResultSet rs, String columnName) throws SQLException { String json = rs.getString(columnName); if (json != null) { try { return objectMapper.readValue(json, YourJsonClass.class); } catch (IOException e) { throw new SQLException("Failed to convert JSON string to object", e); } } return null; } // 其他方法省略... } ``` 在上述示例中,`YourJsonClass` 是你自定义的表示 JSON 字段的类。通过重写 `setNonNullParameter` 和 `getNullableResult` 方法,可以实现将 JSON 字符串转换为对象以及将对象转换为 JSON 字符串的逻辑。 最后,你需要在 MyBatis 的配置文件中注册该类型处理器,以便 tk.mybatis 在处理 JSON 类型字段时能够正确地进行转换。具体的配置方式可以参考 MyBatis 的官方文档或 tk.mybatis 的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值