mybatisplus 多数据源 batchInsert指定invalid bound statement (not found)
时间: 2023-12-06 09:38:19 浏览: 227
根据提供的引用内容,可以看出这个问题涉及到MybatisPlus多数据源和批量插入操作。出现"invalid bound statement (not found)"的错误提示,通常是因为MybatisPlus无法找到对应的Mapper映射文件或者方法名不正确。解决方法如下:
1.检查Mapper映射文件是否存在,以及文件名和路径是否正确。
2.检查Mapper接口中的方法名是否正确,是否与Mapper映射文件中的id一致。
3.检查Mapper接口中的方法参数是否正确,是否与Mapper映射文件中的parameterType一致。
4.检查Mapper接口中的方法返回值是否正确,是否与Mapper映射文件中的resultType一致。
5.检查Mapper接口是否被正确注入到Spring容器中。
6.检查数据源配置是否正确,是否与Mapper接口中的@MapperScan注解或者Mapper映射文件中的namespace一致。
以下是一个MybatisPlus多数据源批量插入的示例代码,供参考:
```java
// 定义数据源1
DataSource ds1 = DataSourceBuilder.create()
.driverClassName("com.mysql.jdbc.Driver")
.url("jdbc:mysql://localhost:3306/db1")
.username("root")
.password("root")
.build();
// 定义数据源2
DataSource ds2 = DataSourceBuilder.create()
.driverClassName("com.mysql.jdbc.Driver")
.url("jdbc:mysql://localhost:3306/db2")
.username("root")
.password("root")
.build();
// 定义MybatisPlus的SqlSessionFactory
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dynamicDataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
factoryBean.setTypeAliasesPackage("com.example.demo.entity");
factoryBean.setPlugins(new Interceptor[]{new PaginationInterceptor()});
SqlSessionFactory sqlSessionFactory = factoryBean.getObject();
// 定义MybatisPlus的SqlSessionTemplate
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
// 定义MybatisPlus的Mapper
BatchMapper batchMapper = sqlSessionTemplate.getMapper(BatchMapper.class);
// 定义批量插入的数据
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 18));
userList.add(new User("李四", 20));
userList.add(new User("王五", 22));
// 执行批量插入操作
batchMapper.batchInsert(userList);
```
阅读全文