Closed WokringAnt closed 6 years ago
方法调用过早,由于通用方法还没有被初始化导致的。
没懂起,大神~!
UT 代码如下
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class IntegrationBaseTest {
@Test
public void baseTest() {
assertTrue(true);
}
}
@MybatisTest
public class UserMapperTest extends IntegrationBaseTest {
@Autowired
private UserMapper userMapper;
@Test
public void findById() {
User user = userMapper.selectByPrimaryKey(1);
assertNull(user);
}
}
spring.datasource.url=jdbc:h2:mem:canary_test spring.datasource.username=root spring.datasource.password=sa
mybatis.type-aliases-package=com.zs.model mybatis.mapper-locations=classpath:mapper/*.xml
mapper.mappers=com.zs.util.CommonMapper mapper.not-empty=false mapper.identity=H2
pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql
MybatisTest 注解的问题。目前没有针对这个注解测试过。
确实是MybatisTest annotation的问题,谢谢
@abel533 通用Mapper,没加载好的话,项目总就无法使用 @PostConstruct,求解
构造器-->自动注入-->PostConstrut-->InitializingBean-->xml中配置init方法
确实是没加载好导致的,mybatis 扫描的接口没有完全按照 spring 的处理顺序进行,所以目前没有好的办法处理,最近会考虑换种方式解决这个问题。
@abel533 那个mybatis-plus boot 插件好像没这个问题
后续会提供@MapperScan
注解来解决。
同样的问题,目前我是用定义一个_监听器: ApplicationListener - ContextRefreshedEvent 处理的。
@abel533 如果是使用了数据库的连接池,每一个连接 session ,在使用前都要 registerMapper吗?
@abel533 这里在跟您请教一下,我这里是非spring 项目,我的SqlSessionFactory 中数据源,session使用了连接池来管理。早上看了一下您的文档想引入过来,发现每一个session在使用前都要 手动注册一遍 通用mapper(mapperHelper.registerMapper(TestUserMapper.class);) 。您那里有没有比较好的解决方案
@abel533 Sorry , I hv resolved this problem, something was wrong in my code
今天我也遇到了这个问题,后来仔细研究了 abel533 大神的样例,发现 @MapperScan
注解要用 tk.mybatis.spring.annotation.MapperScan
,然后就可以了,不知道跟你的情况是不是一样,希望能帮到你
发生这个问题的时候还没法解决,后续发布的mapper-starter-1.2.0解决了这个问题。
17:09:17,969
@xuboke 用 2.0.0 版本的 mapper-starter 试试
已解决,包冲突导致的,心碎
在启动类中,改成tk......这个包就可以了
@abel533 用 2.0.0 版本的 mapper-starter 试试
是指的mapper-spring-boot-starter吗?
我用的版本是2.0.1,也遇到了问题:tk.mybatis.mapper.provider.base.BaseSelectProvider.
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
换 2.0.2,如果还有问题就先禁用 devtools
如果是使用这种spring配置的话也会出现这个问<bean id="sqlSessionFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
需要将他改成tk的实现,如下:<bean id="sqlSessionFactory" class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
@JKTerrific 你这个id名字有问题。。
我也遇到了这种问题Q///Q
我遇到的原因是 @Autowired 和 Mapper 接口一起放到方法入口参数时的报错。 将 Mapper 接口从入口参数改为类的字段就不报错了。
同样的问题,目前我是用定义一个_监听器: ApplicationListener - ContextRefreshedEvent 处理的。
大佬,可以告知如何写的吗,贴一下代码,谢谢了
··· 调用入口 User user = userMapper.selectByPrimaryKey(1); ···