1、springboot 启动类加入bean 如下
// DatabaseIdProvider元素主要是为了支持不同的数据库
@Bean
public DatabaseIdProvider getDatabaseIdProvider() {
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.setProperty("Oracle", "oracle");
properties.setProperty("MySQL", "mysql");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
2、application.yml 配置
spring: datasource:
# 使用mysql # driver-class-name: com.mysql.jdbc.Driver # url: jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8 # username: root # password: root
#使用oracle url: jdbc:oracle:thin:@//localhost:1521/orcl username: system password: system driver-class-name: oracle.jdbc.driver.OracleDriver
3、部分pojo
@Data @Accessors(chain = true) public class Note { private int userId; private String userName; private String userAge; }
4、mapper 如下(注意oracle 语句的大小写,若小写请加“”引号)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sunyard.bigdata.dao.NoteMapper"> <select id="queryAll" resultType="com.sunyard.bigdata.pojo.Note" databaseId="oracle"> SELECT USER_ID,USER_NAME,USER_AGE FROM T_USER </select> <select id="queryAll" resultType="com.sunyard.bigdata.pojo.Note" databaseId="mysql"> SELECT user_id,user_name,user_age FROM t_user </select> </mapper>
5、表
mysql
DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `user_age` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`user_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
oracle
CREATE TABLE "SYSTEM"."T_USER" ( "USER_ID" NUMBER(*,0), "USER_NAME" VARCHAR2(20 BYTE), "USER_AGE" VARCHAR2(20 BYTE) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;
6、controller测试
@Controller @RequestMapping("/note") public class NoteController { @Autowired NoteMapper noteMapper; @RequestMapping("/queryall") @ResponseBody List<Note> queryAll() { return noteMapper.queryAll(); } }
7、l浏览器测试
切换oracle数据源
切换mysql数据源