<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
</configuration>String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);@Mapper
public interface MyMapper {
// 方法定义
}@Configuration
@MapperScan("com.example.mapper")
public class MyBatisConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
}# application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=password<select id="selectUsersByNamePattern" resultType="User">
<bind name="pattern" value="'%' + namePattern + '%'"/>
SELECT * FROM User
WHERE name LIKE #{pattern}
</select># 数据库1配置
spring.datasource.db1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.db1.username=root
spring.datasource.db1.password=123456
spring.datasource.db1.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库2配置
spring.datasource.db2.url=jdbc:oracle:thin:@localhost:1521:ORCL
spring.datasource.db2.username=user1
spring.datasource.db2.password=password1
spring.datasource.db2.driver-class-name=oracle.jdbc.driver.OracleDriver@Configuration
public class MyBatisConfig {
@Bean(name = "dataSource1")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource dataSource1() {
return DataSourceBuilder.create().build();
}
@Bean(name = "sqlSessionFactory1")
public SqlSessionFactory sqlSessionFactory1(@Qualifier("dataSource1") DataSource dataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
// 其他配置(如 mybatis-config.xml 文件的路径)
return factoryBean.getObject();
}
@Bean(name = "transactionManager1")
public DataSourceTransactionManager transactionManager1(@Qualifier("dataSource1") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
// 为数据库2配置类似的数据源、SqlSessionFactory 和事务管理器
// ...
}<transactionManager type="JDBC">
<property name="autoCommit" value="false"/>
</transactionManagertype><transactionManagertype="MANAGED"/><resultMap id="userResultMap" type="User">
<result property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>public interface UserMapper {
User selectUserById(int id);
}<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="userResultMap" type="com.example.entity.User">
<result property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<select id="selectUsersByUnion" resultMap="userResultMap">
SELECT id, name FROM user WHERE age > 18
UNION ALL
SELECT id, name FROM user WHERE name LIKE '%John%'
</select>
</mapper>public interface UserMapper {
@Select("SELECT id, name FROM user WHERE age > 18 " +
"UNION ALL " +
"SELECT id, name FROM user WHERE name LIKE '%John%'")
List<User> selectUsersByUnion();
}<select id="selectUsersByUnion" resultType="User">
<foreach collection="list" item="item" separator="UNION ALL">
SELECT id, name FROM user WHERE ${item.condition}
</foreach>
</select>原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。