Spring Boot 讀取 Oracle 資料庫資料 (JDBC)

首先要在 pom.xml 中引用 jdbc 和 ojdbc 的依賴
註:ojdbc 的版本會依照 Oracle 資料庫的版本而有所不同

    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
        </dependency>
    


在設定檔中設定資料庫連線資訊
application.properties:
    
        spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
        spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
        spring.datasource.username=RUYUT
        spring.datasource.password=abcd1234
    

本次示範用的資料表:

    
CREATE TABLE MEMBER
(
    MEMBER_ID    NUMBER PRIMARY KEY NOT NULL,
    MEMBER_NAME  VARCHAR2(50)       NOT NULL,
    MEMBER_EMAIL VARCHAR2(50)       NOT NULL
);

insert into MEMBER values (1, 'Ruyut', 'a@ruyut.com');
insert into MEMBER values (2, '小明', 'abc@google.com');
    


新增一個 MemberRepository 類別,用來讀取資料

    
        @Repository
        public class MemberRepository {

            private final JdbcTemplate jdbc;

            @Autowired
            public MemberRepository(JdbcTemplate jdbc) {
                this.jdbc = jdbc;
            }

            public List<Map<String, Object>> findAll() {
                String sql = "select * from MEMBER";
                List<Map<String, Object>> list = jdbc.queryForList(sql);
                return list;
            }
        }
    

新增一個 MemberController,回應網頁請求
這裡我們偷懶直接用 Controller 存取 Repository, 正常中間應該至少還要有個 Service 處理業務邏輯

    
        @RestController
        public class MemberController {
        
            @Autowired
            MemberRepository memberRepository;
        
            @GetMapping("/member")
            public List<Map<String, Object>> member() {
                return memberRepository.findAll();
            }
        }
    

使用瀏覽器打開 http://localhost:8080/member 這個網址就會讀取資料庫並顯示讀取到的資料


    
[
  {
    "MEMBER_ID": 1,
    "MEMBER_NAME": "Ruyut",
    "MEMBER_EMAIL": "a@ruyut.com"
  },
  {
    "MEMBER_ID": 2,
    "MEMBER_NAME": "小明",
    "MEMBER_EMAIL": "abc@google.com"
  }
]
    

留言