springboot + mybatis 支持oracle和mysql切换含源码

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数据源

 源码地址:https://github.com/zhugaopo/springboot-2database

原文地址:https://www.cnblogs.com/godpo/p/12369708.html