当我在application.properties中配置数据源时,Spring Boot可以创建数据源。如下:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
我还可以在application.properties
中设置mybatis-config文件。喜欢:
mybatis.config-location=classpath:mybatis-config.xml
众所周知,mybatis-config.xml
也可以配置数据源。
那么,如果我没有在application.properties
中设置数据源,而仅在mybatis-config.xml
中设置数据源怎么办?
我尝试过,我在application.properties
中删除了数据源配置,并在mybatis-config.xml中设置了数据源。但这没用。
使用springboot时如何在mybatis-config.xml中设置数据源?
答案 0 :(得分:0)
您应该将数据库属性(例如application.properties)放在spring-boot配置文件中。之后,您可以获得数据源:
@Autowired
private Environment env;
DataSourceBuilder.create()
.url(env.getProperty("spring.datasource.url"))
.driverClassName(env.getProperty("spring.datasource.driver-class-name"))
.username(env.getProperty("spring.datasource.username"))
.password(env.getProperty("spring.datasource.password"))
.build());
然后使用数据源获取SqlSession:
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("id", transactionFactory, "id");
Configuration configuration = new Configuration(environment);
configuration.addMapper(YourMapper.class);
return new SqlSessionTemplate(sqlSessionFactoryBuilder.build(configuration));
然后使用SqlSession获取映射器:
sqlSession.getMapper(YourMapper.class);
Mybatis只需一个SqlSession即可获取getMapper并运行映射,并使用Java接口公开映射。因此,mybatis不需要关注数据源。
答案 1 :(得分:0)
Mybatis机器需要function YTSearch(options, callback) {
// query database for some data based on "options"
const fromDatabase = {name: 'Tom', age: 29};
callback(fromDatabase);
}
YTSearch({name: 'tom'}, function(data) {
console.log(data);
// {name: 'Tom', age: 29}
});
来创建可用于执行查询的jdbc DataSource
。在常规设置中,此Connection
在Spring上下文中被配置为bean。在春季上下文中,映射器也是使用该数据源(通过DataSource
间接使用)的bean。
您可以按照documentation中的说明在SqlSession
中配置DataSource
。唯一的问题是,如果spring不会意识到这个mybatis-config.xml
,那么它将不会在spring上下文中成为bean。那就是你面临的问题。
在这种情况下,Spring将不会为您管理事务,因此您将无法在您的bean中注入映射器或DataSource
。基本上,您将失去mybatis-spring集成提供的所有功能,因此在mybatis配置中配置mybatis SqlSession
几乎没有意义。
尽管如此,您仍然需要manually从xml配置中创建DataSource
,然后通过SqlSession
/ SqlSession.commit
手动提交/回滚事务。