zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    select(Linux 编程)
    Amazon DynamoDB, 面向互联网应用的高性能、可扩展的NoSQL数据库
    键值表
    工厂方法模式之C++实现
    spring(16)------spring的数据源配置
    LeetCode 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)
    地图之CLLocationManager的使用 定位功能使用
    正则则表达式大全(收集)
    文件的读取和写入(指定路径)
    二维码(带有图片)的生成
  • 原文地址:https://www.cnblogs.com/godpo/p/12369708.html
Copyright © 2011-2022 走看看