Jackie Tang

Results 44 comments of Jackie Tang

org.mybatis.spring.mapper.ClassPathMapperScanner#doScan方法会报 No MyBatis mapper was found in '" + Arrays.toString(basePackages) + "' package. Please check your configuration." 上面这个class里的doScan方法中打印的

basePackages配置在Java config里面了: @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setBasePackage("com.car.domain.mapper"); 报错的package是Application.java文件所在的package

已经在mysqlUrl上添加"&autoReconnect=true" , dao都是使用通用mapper,没有关闭statement的逻辑。 代码中都没有出现SqlSessionTemplate 执行下面这个语句报了上面的错。 ```java public void insertCarTt(CarTtDO carTtDO) { carTtDOMapper.insert(carTtDO); } ```

发现报statement关闭错误的上方都有一个mysql ”MySQLIntegrityConstraintViolationException: Duplicate entry“ 的异常 难道这两个报错之间有关联关系? ···java Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '862442030055280-1495778004781' for key 'index7' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at...

加判断,对这种duplication entry进行预检查后,statement关闭的报错 没有再出现 操作db抛异常后,那个环节会关闭statement呢?

是的。出现重复是业务问题,客户端网络问题导致传了相同的数据。 我把这种情况在insert之前处理了,statement close的报错就没有再出现过 用过温少,他说druid没有close, 通用mapper也没有关的话。 现在只剩下排查mybatis的SqlSessionTemplate了

但是写到Mapper.xml文件中就可以了 ```xml SELECT * FROM tb_ad WHERE = #{now} ]]> AND position = #{position} AND platform = #{platform} AND STATUS = 0 ORDER BY order_no DESC ```

刚才把代码搜了一遍,写法和上面说的一致。 我这边的场景是这样的: 这种写法就不报错 package com.sns.schedule; @SpringBootApplication(scanBasePackages = {"com.sns"}) public class Application{ 这样写就报上面的错(之所以这么折腾老代码,是觉得下面的写法优雅): ****package com.sns;**** ****@SpringBootApplication**** public class Application{

老代码比较早,当时还没有通用mapper的autoconfig, 通用mapper的的MyMapper.java在“com.sns.data”下, 业务Mapper是使用“tk.mybatis.spring.mapper.MapperScannerConfigurer”来自动配置, 你看看有没有上面写的问题,具体代码如下: ![mapperscanner](https://cloud.githubusercontent.com/assets/13701989/25570601/4b128b06-2e59-11e7-8503-fc7f433abc1d.png)

这个有。代码写的比较乱,把能用或不能用的dependencies都放到Pom文件中了。 但是在代码中显式声明了tk.mybatis.spring.mapper.MapperScannerConfigurer,按照starter这种自动配置的逻辑,如果有MapperScannerConfigurer的实例了,就不会再重复初始化实例了 这样看的话,应该也没有什么影响吧