abel533 / mybatis-spring-boot Goto Github PK
View Code? Open in Web Editor NEWSpring Boot集成MyBatis的基础项目
Spring Boot集成MyBatis的基础项目
非常感谢做了这么一个强的工具!
集成到Spring Boot中非常顺利,绝大部分功能都正常,目前遇到一个问题,当批量插入的时候,调insertList方法,会抛出异常:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis.mapper.provider.SpecialProvider.dynamicSQL). Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.SpecialProvider
Caused by: java.lang.InstantiationException: tk.mybatis.mapper.provider.SpecialProvider
at java.lang.Class.newInstance(Class.java:427) ~[na:1.8.0_92]
at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:85) ~[mybatis-3.4.0.jar:3.4.0]
... 82 common frames omitted
Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.()
at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_92]
at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_92]
... 83 common frames omitted
集成配置如下:
Pom文件
tk.mybatis
mapper-spring-boot-starter
1.1.0
com.github.pagehelper
pagehelper-spring-boot-starter
1.1.0
醒置文件:
mapper:
mappers:
- com.ld.utils.LordarMapper
not-empty: false
identity: MYSQL
类定义:
public interface LordarMapper extends Mapper, MySqlMapper {
}
参考楼主的配置,但是在用 selectOne 的时候遇到这个错误,一直找不到原因,还希望给点提示
为什么man类上面需要加上MapperScan?然后在yml文件里又配置了这个?
这2个地方配置一样的是否重复?还是有特殊用途?
spring cloud中依赖的spring boot是1.3.5.RELEASE版本的,按照现在的配置运行就会报错。
比如主类Application.java中加上注解@MapperScan(xxxxx)就会报这个错
java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.mybatis.spring.annotation.MapperScan.factoryBean()
,如果不加@MapperScan注解,而是在mapper接口上面加上@Mapper注解的话,又扫描不到。
请问该如何解决?
when i use pagehelper and annotation Sqlprovider
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'providerTakesParameterObject' in 'class org.apache.ibatis.builder.annotation.ProviderSqlSource'
i find field providerTakesParameterObject in class PageProviderSqlSource ,but not in use
怎么在insert之后得到添加的序列的值
hi,abel533,我下载了本demo项目,在使用单个mapper时没有报这个警告错误,但是当把mapper增加为2个以上时,就会报该异常信息,不知具体的原因。
跟踪代码,看到会优先执行MyBatisMapperScannerConfig扫描,虽然设置了AutoConfigureAfter,MyBatisMapperScannerConfig修改definition.setBeanClass(MapperFactoryBean.class)后,spring在做dataSourceInitializerPostProcessor处理时,会抛出该异常,不知道哪里出了问题。而且会重复出现2,3边同样的WARN,百分百重现。
WARN 43180 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'subCountryMapper' defined in file [/tt/fsm/target/classes/com/lmtest/fsm/mapper/SubCountryMapper.class]: Cannot resolve reference to bean 'sqlSessionFactory' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sqlSessionFactory': Requested bean is currently in creation: Is there an unresolvable circular reference?
mybatis-spring-boot-starter中好像没有事务相关配置,默认的spring-boot配置好像没有事务处理。
demo中的查询按钮没有效果,后台用的selectall方法。我参数使用select方法后发现接收的查询参数的值为“”导致需要两个条件精确匹配才可以查询,想问一下springboot中的自定义参数处理器要怎么写
http://www.cnblogs.com/morethink/p/6435736.html这是springmvc的案例
如果前后端分离,前端肯定只传给后台一个页码,这个不知道怎么写,还有可能每页显示的记录数,前端也要传,难道要自己封装一层吗
NotWritablePropertyException: Invalid property 'mapperHelper' of bean class [org.mybatis.spring.mapper.MapperFactoryBean]: Bean property 'mapperHelper' is not writable or has an invalid setter method
gradle 搭建提示这个错误,哪里出问题啦?
遇到了奇怪的报错:
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
at tk.mybatis.mapper.mapperhelper.MapperHelper.setSqlSource(MapperHelper.java:247)
at tk.mybatis.mapper.mapperhelper.MapperHelper.processConfiguration(MapperHelper.java:310)
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:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 52 more
Caused by: java.lang.RuntimeException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
at tk.mybatis.mapper.mapperhelper.MapperTemplate.setSqlSource(MapperTemplate.java:246)
at tk.mybatis.mapper.mapperhelper.MapperHelper.setSqlSource(MapperHelper.java:244)
... 57 more
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:278)
at tk.mybatis.mapper.provider.base.BaseUpdateProvider.updateByPrimaryKeySelective(BaseUpdateProvider.java:64)
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at tk.mybatis.mapper.mapperhelper.MapperTemplate.setSqlSource(MapperTemplate.java:234)
... 58 more
Caused by: java.lang.RuntimeException: 无法获取实体类cn.dceast.model.User对应的表名!
at tk.mybatis.mapper.mapperhelper.EntityHelper.getEntityTable(EntityHelper.java:65) ~[mapper-3.3.9.jar:na]
at tk.mybatis.mapper.entity.Example.(Example.java:93) ~[mapper-3.3.9.jar:na]
at tk.mybatis.mapper.entity.Example.(Example.java:78) ~[mapper-3.3.9.jar:na]
at tk.mybatis.mapper.entity.Example.(Example.java:68) ~[mapper-3.3.9.jar:na]
at cn.dceast.config.security.SecurityConfig$1.loadUserByUsername(SecurityConfig.java:63) ~[classes/:na]
at org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:114) ~[spring-security-core-4.1.4.RELEASE.jar:4.1.4.RELEASE]
... 45 common frames omitted
//出错行
Example example = new Example(User.class);
//实体
@DaTa
public class User extends BaseEntity implements UserDetails {
private String username;
private String password;
private String role;
我安照步骤创建了 mapper接口和Provider 但是报错,说是Provider这个类不能实例化,能否提供一个例子
项目用的springboot
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
只有主数据库可以使用到分页插件,其他数据源不进行分页。
两者都可以兼容使用呢,做一个jar包。
AutoConfigureAfter的意思是应该在MyBatisConfig后运行,实际debug时没有效果,示例项目中没有效果.在自己的项目中,还会报错
Cannot resolve reference to bean 'sqlSessionFactory' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sqlSessionFactory': Requested bean is currently in creation: Is there an unresolvable circular reference?
以下是我的实体类:
public class UmUser {
private String nickName;
private int age;
private String sex;
private String phone;
private String email;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "create_time", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date createTime = new Date();
@Column(name = "update_time")
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime = new Date();
@Column(name = "create_by")
private String createBy;
@Column(name = "update_by")
private String updateBy;
...
}
我自定义的Mapper
public interface CustomBaseMapper<T> extends IdsMapper<T> {
}
在IdsProvider中打断点后发现,所有属性都被当做了primary key. 就是下面这句
Set<EntityColumn> columnList = EntityHelper.getPKColumns(entityClass);
请问这个问题怎么解决?
MyBatisMapperScannerConfig里的bean可以放在MyBatisConfig里吗?我尝试了报错。
我这边两个类里都打印了几句话,打印的信息看到确实是MapperScannerConfig比MyBatisConfig早执行,关键是basePackage
没法读到配置的值,这个加@AutoConfigureAfter
也没用,而且加了MapperScannerConfig还比MyBatisConfig 早执行....
@Configuration
public class MapperScannerConfig {
@Value("${datasource.basePackage:com.tg.ms.mapper}")
private String basePackage;
@Bean
public MapperScannerConfigurer BPMapperScannerConfigurer() {
System.out.println("mapper--1.----******----"+basePackage+"----*******");
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.tg.mapper");
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
return mapperScannerConfigurer;
}
}
你好,这个工程怎么设置例如:callSettersOnNulls和cacheEnabled的属性?
PayProductCategory payProductCategorySelect = new PayProductCategory();
payProductCategorySelect.setState((byte)ShopConstants.State.LIVE.ordinal());
List payProductCategoryList = payProductCategoryMapper.select(payProductCategorySelect);
for(PayProductCategory payProductCategory : payProductCategoryList){
System.out.println(payProductCategory);
}
@table(name = "pay_product_category")
public class PayProductCategory {
@id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 父目录.Id=0表一级目录
*/
@Column(name = "parent_id")
private Long parentId;
/**
* 类目名
*/
private String name;
/**
* 1 正常 0删除
*/
private Byte state;
/**
* 同级目录排序
*/
@Column(name = "sort_order")
private Byte sortOrder;
/**
* 1代表是父目录 0不是
*/
@Column(name = "is_parent")
private Byte isParent;
@Column(name = "sys_create_time")
private Date sysCreateTime;
@Column(name = "sys_update_time")
private Date sysUpdateTime;
}
我就做着这些操作,为什么会出现类转换异常呢
ava.lang.ClassCastException: tk.mybatis.springboot.model.PayProductCategory cannot be cast to tk.mybatis.springboot.model.PayProductCategory
at tk.mybatis.springboot.service.front.impl.PayProductServiceImpl.selectAllPayproduct(PayProductServiceImpl.java:31)
用的是Idea16. 有按博主的文章调整过编码格式的.
看到config里面配置了事务,请问这个如何使用?在service层类上加上@transactional注解好像不起作用,打印的SQL语句提示事务不被spring管理,把@transactional注解移到mapper层,提示事务被spring管理。请问如何让事务作用在service层?
在stackoverflow上看到相似问题,也没有得到解答。
不知作者写的默认配置如何使用,我对比xml的配置,发现有些不同,
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("offsetAsPageNum", "true");
properties.setProperty("rowBoundsWithCount", "true");
properties.setProperty("pageSizeZero", "true");
properties.setProperty("reasonable", "false");
properties.setProperty("params", "pageNum=pageHelperStart;pageSize=pageHelperRows;");
properties.setProperty("supportMethodsArguments", "false");
properties.setProperty("returnPageInfo", "none");
pageHelper.setProperties(properties);
这种报错在直接使用java.sql.Statement比较好处理。
但在spring boot 使用starter后需要怎么处理呢?
### Error updating database. Cause: java.sql.SQLException: No operations allowed after statement closed.
### SQL: INSERT INTO car_tt ( id,insertTime,tid) VALUES( ?,?,?)
### Cause: java.sql.SQLException: No operations allowed after statement closed.
; SQL []; No operations allowed after statement closed.; nested exception is java.sql.SQLException: No operations allowed after statement closed.
org.springframework.dao.TransientDataAccessResourceException:
### Error updating database. Cause: java.sql.SQLException: No operations allowed after statement closed.
### SQL: INSERT INTO car_tt ( id,insertTime,tid) VALUES( ?,?,?)
### Cause: java.sql.SQLException: No operations allowed after statement closed.
; SQL []; No operations allowed after statement closed.; nested exception is java.sql.SQLException: No operations allowed after statement closed.
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:108)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy79.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:278)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:57)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy85.insert(Unknown Source)
异常信息如下:
Caused by: 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) ~[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.$Proxy81.selectList(Unknown Source) ~[?:?]
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.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) ~[mybatis-3.4.4.jar:3.4.4]
at com.sun.proxy.$Proxy82.selectAll(Unknown Source) ~[?:?]
at com.xxx.xxx.core.base.impl.BaseServiceImpl.findAll(BaseServiceImpl.java:86) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration.shiroFilterFactoryBean(ShiroConfiguration.java:81) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.CGLIB$shiroFilterFactoryBean$1(<generated>) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734$$FastClassBySpringCGLIB$$6e96921a.invoke(<generated>) ~[classes/:?]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.shiroFilterFactoryBean(<generated>) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:923) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:804) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:558) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:432) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:395) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:220) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1260) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1101) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
... 24 more
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:103) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.builder.annotation.ProviderSqlSource.getBoundSql(ProviderSqlSource.java:73) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.4.jar:3.4.4]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) ~[mybatis-spring-1.3.1.jar:1.3.1]
at com.sun.proxy.$Proxy81.selectList(Unknown Source) ~[?:?]
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.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) ~[mybatis-3.4.4.jar:3.4.4]
at com.sun.proxy.$Proxy82.selectAll(Unknown Source) ~[?:?]
at com.xxx.xxx.core.base.impl.BaseServiceImpl.findAll(BaseServiceImpl.java:86) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration.shiroFilterFactoryBean(ShiroConfiguration.java:81) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.CGLIB$shiroFilterFactoryBean$1(<generated>) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734$$FastClassBySpringCGLIB$$6e96921a.invoke(<generated>) ~[classes/:?]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.shiroFilterFactoryBean(<generated>) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:923) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:804) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:558) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:432) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:395) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:220) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1260) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1101) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
... 24 more
Caused by: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider
at java.lang.Class.newInstance(Class.java:427) ~[?:1.8.0_111]
at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:85) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.builder.annotation.ProviderSqlSource.getBoundSql(ProviderSqlSource.java:73) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.4.jar:3.4.4]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) ~[mybatis-spring-1.3.1.jar:1.3.1]
at com.sun.proxy.$Proxy81.selectList(Unknown Source) ~[?:?]
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.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) ~[mybatis-3.4.4.jar:3.4.4]
at com.sun.proxy.$Proxy82.selectAll(Unknown Source) ~[?:?]
at com.xxx.xxx.core.base.impl.BaseServiceImpl.findAll(BaseServiceImpl.java:86) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration.shiroFilterFactoryBean(ShiroConfiguration.java:81) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.CGLIB$shiroFilterFactoryBean$1(<generated>) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734$$FastClassBySpringCGLIB$$6e96921a.invoke(<generated>) ~[classes/:?]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.shiroFilterFactoryBean(<generated>) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:923) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:804) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:558) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:432) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:395) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:220) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1260) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1101) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
... 24 more
Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()
at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_111]
at java.lang.Class.newInstance(Class.java:412) ~[?:1.8.0_111]
at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:85) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.builder.annotation.ProviderSqlSource.getBoundSql(ProviderSqlSource.java:73) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.4.jar:3.4.4]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) ~[mybatis-spring-1.3.1.jar:1.3.1]
at com.sun.proxy.$Proxy81.selectList(Unknown Source) ~[?:?]
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.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) ~[mybatis-3.4.4.jar:3.4.4]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) ~[mybatis-3.4.4.jar:3.4.4]
at com.sun.proxy.$Proxy82.selectAll(Unknown Source) ~[?:?]
at com.xxx.xxx.core.base.impl.BaseServiceImpl.findAll(BaseServiceImpl.java:86) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration.shiroFilterFactoryBean(ShiroConfiguration.java:81) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.CGLIB$shiroFilterFactoryBean$1(<generated>) ~[classes/:?]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734$$FastClassBySpringCGLIB$$6e96921a.invoke(<generated>) ~[classes/:?]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at com.xxx.xxx.shiro.ShiroConfiguration$$EnhancerBySpringCGLIB$$8b03f734.shiroFilterFactoryBean(<generated>) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:923) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:804) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:558) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:432) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:395) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:220) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1260) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1101) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
... 24 more
不在@configuration使用,而在项目启动完成后通过Service调用一切正常。
请问这个是有什么原因引起的?
只有example查询报错,java.lang.RuntimeException: 无法获取实体类cxxx对应的表名!问题滞留了好几天,调试的时候getEntityTable方法中的entityTableMap,的values是空,可能是什么原因导致的?
我采用您的例子,将数据库撤换成h2后,中文乱码。结果:
[ { "id": 1, "page": 1, "rows": 10, "name": "鐭冲搴�", "state": "娌冲寳" }, { "id": 2, "page": 1, "rows": 10, "name": "閭兏", "state": "娌冲寳" } ]
使用mysql正常,我修改的地方有:
MyBatisMapperScannerConfig:
properties.setProperty("IDENTITY", "h2");
配置文件:
url: "jdbc:h2:mem:test" username: "sa" password: "" driver-class-name: org.h2.Driver schema: database/import.sql
其中sql为:
DROP TABLE IF EXISTS city; CREATE TABLE city( ID INT PRIMARY KEY, NAME VARCHAR(20), state VARCHAR(20) ); DROP TABLE IF EXISTS
country; CREATE TABLE
country(
Idint(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
countrynamevarchar(255) DEFAULT NULL COMMENT '名称',
countrycodevarchar(255) DEFAULT NULL COMMENT '代码', PRIMARY KEY (
Id`)
);
INSERT INTO city
VALUES ('1', '石家庄', '河北');
INSERT INTO city
VALUES ('2', '邯郸', '河北');`
在项目运行过程中,我采用idea的控制台查询中文正常。
不知道为什么java查询出的却是乱码,debug发现在mapper.selectAll的时候出来就是乱码了。
研究您的代码的时候发现生成的 uuid 无法回传 想自己改一改结果实现不了
<bind name="idDaDa_bind" value='@java.util.UUID@randomUUID().toString().replace("-", "")'/>
<selectKey resultType="java.lang.String" order="AFTER" keyProperty="idDaDa">
select #{idDaDa_bind,javaType=java.lang.String}
</selectKey>
INSERT INTO hehe5
<trim prefix="(" suffix=")" suffixOverrides=",">id_da_da,hehe1,hehe2,hehe3,hehe4,hehe5,hehe6,</trim>
<trim prefix="VALUES(" suffix=")" suffixOverrides=",">
<if test="idDaDa != null">#{idDaDa,javaType=java.lang.String},</if>
<if test="idDaDa == null">#{idDaDa_bind,javaType=java.lang.String},</if>
<if test="hehe1 != null">#{hehe1,javaType=java.lang.String},</if>
<if test="hehe1 == null">#{hehe1,javaType=java.lang.String},</if>
<if test="hehe2 != null">#{hehe2,javaType=java.lang.String},</if>
<if test="hehe2 == null">#{hehe2,javaType=java.lang.String},</if>
<if test="hehe3 != null">#{hehe3,javaType=java.lang.String},</if>
<if test="hehe3 == null">#{hehe3,javaType=java.lang.String},</if>
<if test="hehe4 != null">#{hehe4,javaType=java.lang.String},</if>
<if test="hehe4 == null">#{hehe4,javaType=java.lang.String},</if>
<if test="hehe5 != null">#{hehe5,javaType=java.lang.String},</if>
<if test="hehe5 == null">#{hehe5,javaType=java.lang.String},</if>
<if test="hehe6 != null">#{hehe6,javaType=java.lang.String},</if>
<if test="hehe6 == null">#{hehe6,javaType=java.lang.String},</if>
</trim>
错误:Caused by: java.lang.InstantiationException: tk.mybatis.mapper.provider.SpecialProvider
at java.lang.Class.newInstance(Class.java:427)
at org.apache.ibatis.builder.annotation.ProviderSqlSource.createSqlSource(ProviderSqlSource.java:85)
... 136 common frames omitted
Caused by: java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.()
at java.lang.Class.getConstructor0(Class.java:3082)
相关代码已上传到github:https://github.com/helloworldtang/SpringBootCookbook
rest接口:/tx/post
所在class:
com.tangcheng.rest.TxController
insert之类的都没问题
但是返回实体对象的时候就会报这个错
具体代码是这样的:
AuthUser authUser = new AuthUser();
authUser.setId(1);
AuthUser auth = authUserDao.selectOne(authUser);
<collection property="roles" ofType="tk.mybatis.springboot.model.SysRole">
<result column="name" property="name"/>
</collection>
有没有搞个整合beetl的版本
复杂的多表关联查询,不想用test下的这种拼写sql的方式,能否写在xml里,好像没有示例
使用原项目代码作如下修改:
1、UserInfo类中增加如下成员变量:
private LocalDateTime createTime;
2、项目引入typeHandlers(https://github.com/javaplugs/mybatis-types)
1)pom.xml中添加依赖:
<dependency>
<groupId>com.github.javaplugs</groupId>
<artifactId>mybatis-types</artifactId>
<version>0.3</version>
</dependency>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
2)MyBatisConfig类中sqlSessionFactoryBean()方法增加:
bean.setTypeHandlersPackage("com.github.javaplugs.mybatis");
3、打包运行
mvn clean package -DskipTests=true
java -jar target/mybatis-spring-boot-1.0.0-SNAPSHOT.jar
即报错: IllegalStateException: No typehandler found for property createTime
若直接将依赖的mybatis-types中的代码LocalDateTimeTypeHandler拷贝到项目本地的代码路径下,比如util包,再修改MyBatisConfig中的配置:
bean.setTypeHandlersPackage("tk.mybatis.springboot.util");
重新打包运行
mvn clean package -DskipTests=true
java -jar target/mybatis-spring-boot-1.0.0-SNAPSHOT.jar
则不再出现该错误
下面的代码在执行时,发现生成的sql与预期的不一样。预期是
UPDATE car_tt set name=? WHERE id = ?
CarTtDO carTtDO=new CarTtDO();
carTtDO.setId(1L);
carTtDO.setName(null);
carTtDOMapper.updateByPrimaryKey(carTtDO);
### SQL: UPDATE car_tt WHERE id = ?
### Cause: java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'tt WHERE id = ?',expect SET, actual WHERE WHERE : UPDATE car_tt WHERE id = ?
; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; sql injection violation, syntax error: syntax error, error in :'tt WHERE id = ?',expect SET, actual WHERE WHERE : UPDATE car_tt WHERE id = ?; nested exception is java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'tt WHERE id = ?',expect SET, actual WHERE WHERE : UPDATE car_tt WHERE id = ?
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy87.update(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy88.updateByPrimaryKeySelective(Unknown Source)
at com.xiaoyi.app.business.car.biz.CarTtBiz.updateTt(CarTtBiz.java:103)
问题重现
pom.xml 中添加
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency>
运行 spring-boot:run
点击 修改 操作,如访问http://localhost:8181/countries/view/1,出现java.lang.ClassCastException: tk.mybatis.springboot.model.Country cannot be cast to tk.mybatis.springboot.model.Country
你好,我使用slf4j进行日志打印。
这个是logback-spring.xml中的部分配置
${CONSOLE_LOG_PATTERN}
utf8
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>40</maxHistory>
</rollingPolicy>
</appender>
这个是application.yum中的配置
logging:
level: INFO
我好奇的是,在编译器中可以正常打印日志,但是将项目移到服务器上时,日志文件中没有任何一条日志记录,这个是和整合的项目有管吗。(我用纯的mybatis+spring boot时,这么配置日志文件是有记录的)
我利用tk.mybatis进行多数据源配置时,一个Mapper可以正常调用动态SQL,而另外一个就一直报NoSuchMethodException。我进行了部分源码跟踪:如BaseInsertProvider,只有一个数据库的mapper被获取,而另外一个数据源的Mapper却没有显示。不知道这个是什么问题
看您写支持 springboot1.4 , 现在出1.5.x了, 请问是否支持
Mapper需要配置mybatis的mapper路径,如果不配置或配置了但是对应路径下没有xml文件则报错,能不能实现可以不配置或则配置了不去限制这个必须有xml文件,因为通用的mapper已经实现了无xml即可对单表的crud操作了
Error:Cause: inconsistent module metadata found. Descriptor: tk.mybatis:mapper-spring-boot-starter:1.0.0 Errors: bad version: expected='1.1.0' found='1.0.0'
补充一下,我用的是gradle
这边有多数据源的配置么?
我按你的方法及框架版本搭架环境,运行时总是显示错误:
Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.dtjys.mapper.UserMapper.getById
at org.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:196)
at org.apache.ibatis.binding.MapperMethod.(MapperMethod.java:44)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
at com.sun.proxy.$Proxy36.getById(Unknown Source)
at org.dtjys.service.impl.UserService.show(UserService.java:17)
at org.dtjys.Application.main(Application.java:22)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
是什么原因?
使用mybatis-spring-boot-starter方式也出现了同样的问题
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.