jhipster - 在 jhipster 5.7.2 项目中使用 mybatis ORM 添加第二个数据源的问题
问题描述
在 jhipster 5.7.2 项目中使用 mybatis ORM 添加第二个数据源的问题
1、添加配置MatchingDatabaseConfiguration.java
@Configuration
@EnableTransactionManagement
@EntityScan(basePackages = "sample.mybatis.domain")
@MapperScan(basePackages = "sample.mybatis.dao", sqlSessionTemplateRef = "matchingSqlSessionTemplate")
public class MatchingDatabaseConfiguration {
private String localMapper = "classpath:mappers/*.xml";
@Bean
@ConfigurationProperties("application.datasource")
public DataSourceProperties matchingDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "matchingDataSource")
@ConfigurationProperties("application.datasource")
public DataSource matchingDataSource() {
return matchingDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean(name = "matchingTransactionManager")
public DataSourceTransactionManager matchingTransactionManager() {
return new DataSourceTransactionManager(matchingDataSource());
}
@Bean(name = "matchingSqlSessionFactory")
public SqlSessionFactory matchingSqlSessionFactory() throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(matchingDataSource());
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().
getResources(localMapper));
return sessionFactory.getObject();
}
@Bean(name = "matchingSqlSessionTemplate")
public SqlSessionTemplate buildSqlSessionTemplate(@Qualifier("matchingSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean(name = "matchingTransaction")
public PlatformTransactionManager matchingTransactionManager(@Qualifier("matchingDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
2 应用程序-dev.yml
application:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password:
3 ApplicationProperties.java 添加属性字段
4 添加mybatis示例xml文件 https://github.com/jnuc093/xpdjh/tree/master/src/main/resources/mappers
5 添加sample.mybatis包 https://github.com/jnuc093/xpdjh/tree/master/src/main/java/sample/mybatis
6 添加控制器
@RestController
@RequestMapping("/api")
public class CityResource {
@Autowired
private CityDao cityDao;
@Autowired
private HotelDao hotelDao;
@GetMapping("/test-mybatis/{cityId}")
public Hotel run(@PathVariable int cityId) {
return hotelDao.selectByCityId(cityId);
}
}
7 mybatis官方样例在这里
当我访问http://localhost:9000/api/test-mybatis/123
Response Body
{
"type": "https://www.jhipster.tech/problem/problem-with-message",
"title": "Internal Server Error",
"status": 500,
"detail": "Could not find result map sample.mybatis.dao.CityDao.City",
"path": "/api/test-mybatis/123",
"message": "error.http.500"
}
我该如何解决这个问题
解决方案
推荐阅读
- java - 为我的 Spring Boot 应用程序创建一个默认的安全登录页面
- reactjs - How to handle dropdown data and fetched English data when my user choose another language?
- python - Python for 循环仅将最后一个结果附加到列表/数据帧(以 iris 数据集为例)
- reactjs - 如何为 Kibana 开发插件?
- c# - Fresh 类型参数开闭
- cordova - 升级到 API 级别 28 后,我的项目插件无法正常工作
- c - 找到最小时间和日期戳的有效方法是什么?
- jenkins - jenkins 使用无法联系节点名称 java.lang.InterruptedException 构建停滞
- python - 值:要解压的值太多(预计 18 个)
- r - 如何有效地将几列分组为 data.table 中的一个列表列