Open wirechen opened 6 years ago
现在有一个问题,就不支持relax方式的属性。
例如 not-empty
,需要写成 notempty
。
那意思就是你还是不推荐使用纯application配置文件的方式来集成mapper和pagehelper吗?还是我不用relax的方式来写配置文件就行得通?
问题找到了,我的定制Mapper和一般Mapper都放在dao目录下了。看到你源码里面说了定制Mapper不能被扫描到
Mapper-Starer 1.2.0 使用须知 使用1.2.0的时候需要满足下面三种情况之一
项目(间接)依赖中不包含官方的mybaitis-starter
使用tk提供的@MapperScan注解方式
在启动类上增加如下注解忽略
@EnableAutoConfiguration(
exclude={org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.class})
public class Application {
}
1.2.1版本还需要在启动类上加@EnableAutoConfiguration注解吗?
@vision-ken 不需要加这个注解了。
如果你使用了官方的MapperScan 注解,就换成 tk 包中提供的同名注解。
1.按照作者说明,去掉官方mybatis-spring-boot-starter 依赖,如下是我们项目与mybatis相关的依赖:
import tk.mybatis.mapper.common.BaseMapper; import tk.mybatis.mapper.common.ConditionMapper; import tk.mybatis.mapper.common.IdsMapper; import tk.mybatis.mapper.common.special.InsertListMapper;
/**
数据源
spring.datasource.url=jdbc:mysql://localhost:3306/youdanDB?useSSL=false spring.datasource.username=root spring.datasource.password=buzhidao spring.datasource.driver-class-name=com.mysql.jdbc.Driver
连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis配置-entity扫描的包名
mybatis.type-aliases-package=com.xxx.usermanagerserver.model
mybatis配置-开启驼峰映射
mybatis.configuration.map-underscore-to-camel-case=true (没有mybatis的xml文件路径配置)
mybatis配置-mapper配置
mapper.mappers=com.xxx.usermanageserver.dao.Mapper (这里是通用Mapper所在路径) mapper.not-empty=false mapper.identity=MYSQL
mybatis配置-pagehelper分页插件配置
pagehelper.helper-dialect=mysql pagehelper.page-size-zero=true pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql
package com.xxx.usermanageserver.dao;
import com.xxx.usermanageserver.model.User; import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapper extends Mapper{
}
@Slf4j public class TestUserMapper extends UsermanageServerApplicationTests {
}
package com.xxx.usermanageserver;
import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @MapperScan("com.xxx.usermanageserver.dao") public class UsermanageServerApplication {
}
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseInsertProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseInsertProvider
Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.base.BaseInsertProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseInsertProvider 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.statement.BaseStatementHandler.(BaseStatementHandler.java:64)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.(PreparedStatementHandler.java:40)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.(RoutingStatementHandler.java:46)
at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:558)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:48)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
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.Plugin.invoke(Plugin.java:63)
at com.sun.proxy.$Proxy67.update(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185)
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)
... 34 more
Caused by: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseInsertProvider
at java.lang.Class.newInstance(Class.java:427)
at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:117)
... 56 more
Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseInsertProvider.()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
... 57 more