移動易開源APP組合套件更新——支持多種外部數據庫,支持全文搜索

一、移動易後臺實現外部數據庫鏈接

要實現外置數據庫,即上層開發人員不關心下層數據庫的實現,在Spring boot項目 中須要針對不一樣數據庫修改application.properties文件以及在項目中添加依賴包 。本文主要介紹移動易後臺如何實現同不一樣數據源的鏈接,數據源包括MySQL,Oracle,MSSQL,PostgreSQL。html

移動易官方網站java

二、前期準備

  1. Java 8mysql

  2. 熟悉Maven項目git

  3. 熟悉Spring bootspring

  4. 數據及驅動包以下表(數據庫安裝及配置見官網教程)sql

數據庫 版本 JDBC驅動包 下載地址
MySQL 64位 MySQL14.14 mysql-connector-java(5.1.41) download
Oracle 64位 Oracle 11g 11.2.0.1.0 ojdbc14(10.2.03) download
MSSQL 64位 Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 sqljdbc4(4.0) download
PostgreSQL 64位 PostgreSQL 9.6 postgresql(9.4.1208-jdbc42-atlassian-hosted) download

三、具體實現步驟

3.一、首先將項目git至本地,命令以下:

git clone https://git.oschina.net/sectong/yidongyi.git

3.二、將下載的項目import至eclipse中

- file->import->git->existing local repository

- 項目結構以下

3.三、右擊項目team->switch to ->new branch針對不一樣的數據庫建立不一樣的分支,以下所示:

3.四、配置每一個數據源

四、數據源配置

4.一、MySQL數據源配置

4.1.一、進入MySQL分支,首先須要添加項目依賴的數據庫鏈接包(這裏使用mysql-connector-java,版本5.1.41),雙擊pom.xml文件,增長如下依賴。

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.41</version>
    </dependency>

4.1.二、在application.properties文件中添加對MySQL數據庫的配置,以下所示:

spring.datasource.url=jdbc:mysql://localhost/yidongyi?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
    spring.datasource.username=root
    spring.datasource.password=123456

4.1.三、執行相應的sql腳本文件在yidongyi數據庫下建立users,authorities,news表便可,以下:

CREATE TABLE `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(45) NOT NULL,
      `password` varchar(100) NOT NULL,
      `image` varchar(200) DEFAULT '',
      `enabled` varchar(45) NOT NULL DEFAULT '1',
      PRIMARY KEY (`id`),
      UNIQUE KEY `username_UNIQUE` (`username`)
    ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE `authorities` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(45) NOT NULL,
      `authority` varchar(45) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username_UNIQUE` (`username`,`authority`)
    ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `news` (
      `id` int(11) NOT NULL,
      `title` varchar(50) DEFAULT NULL,
      `img` varchar(45) DEFAULT NULL,
      `content` varchar(100) DEFAULT NULL,
      `datetime` date DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.二、Oracle數據源的配置

4.2.一、 因爲Oracle 受權問題,須要將Oracle數據庫鏈接包下載到本地後手動添加至本地庫。首先到官網上下載Oracle的驅動包(這裏用的是ojdbc14 版本10.2.0.3):http://www.oracle.com/technet...

  • 接着在maven存儲倉庫中(mavenrepository.com)找到對應版本的依賴,以下:數據庫

<dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>10.2.0.3</version>
    </dependency>

4.2.二、接着就是將下載好的驅動包手動添加到maven本地倉庫,打開cmd窗口,將目錄切換到驅動包所在的目錄,接着調用以下命令:

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3 -Dpackaging=jar -Dfile=ojdbc14.jar

效果以下: oracle

4.2.三、接着在application.properties 文件夾中添加Oracle數據庫的配置信息

spring.datasource.url = jdbc:oracle:thin:@localhost:1521:ORCL
    spring.datasource.username=system
    spring.datasource.password=oracle

4.2.四、最後在Oracle數據庫中建立相應表並添加約束,以下所示:

--建立用戶表--
    CREATE TABLE users
    (
    id NUMBER(11) NOT NULL,
    username VARCHAR(45) NOT NULL,
    password VARCHAR(100) NOT NULL,
    image VARCHAR(200) DEFAULT'',
    enabled VARCHAR(45) DEFAULT '1'
    );  
    
    --爲用戶表添加約束--
    ALTER TABLE users
    ADD CONSTRAINT PK_ID PRIMARY KEY(id)
    ADD CONSTRAINT UNI_NAME UNIQUE(username);
    
    --爲用戶表id字段建立序遞增序列--
    CREATE SEQUENCE userid_seq START WITH 12 INCREMENT BY 1;
    
    --爲用戶表添加觸發器實現id字段自增--
    CREATE TRIGGER userid_trigger
    BEFORE INSERT ON users
    FOR EACH ROW 
    BEGIN
    SELECT userid_seq.nextval into :new.id FROM dual;
    END;
    
    --建立管理員表--
    CREATE TABLE authorities
    (
        id NUMBER(11) NOT NULL,
        username VARCHAR(45) NOT NULL,
        authority VARCHAR(45) NOT NULL
    );
    
    --爲管理員表添加約束--
    ALTER TABLE authorities ADD CONSTRAINT PK_AUID PRIMARY KEY(id);
    
    --爲管理員表id字段建立遞增序列--
    CREATE SEQUENCE authorityid_seq START WITH 14 INCREMENT BY 1;
    
    --爲管理員表設置觸發器--
    CREATE TRIGGER authorityid_trigger
    BEFORE INSERT ON authorities
    FOR EACH ROW 
    BEGIN
    SELECT authorityid_seq.nextval into :new.id FROM dual;
    END;
    
    --建立news表--
    CREATE TABLE news
    (
        id NUMBER(11) NOT NULL PRIMARY KEY,
        title VARCHAR(45) NOT NULL,
        img VARCHAR(45) NOT NULL,
        content VARCHAR(200),
        datetime DATE
    );

4.三、MSSQL 數據源的配置

4.3.一、首先添加依賴包(這裏用的是sqljdbc4 版本4.0),雙擊pom.xml文件,添加以下依賴:

<dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.0</version>
    </dependency>

4.3.二、接着在application.properties 文件中添加對數據源的配置,以下:

spring.datasource.url=jdbc:sqlserver://localhost:1433;DatabaseName=yidongyi;
    spring.datasource.username=use_c
    spring.datasource.password=123456

4.3.三、最後在MSSQL中建立表以及約束:

--建立authorities表--  
    USE [yidongyi]
    GO
    
    /****** Object:  Table [dbo].[authorities]    Script Date: 07/03/2017 13:58:04 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING ON
    GO
    
    CREATE TABLE [dbo].[authorities](
        [id] [int] IDENTITY(14,1) NOT NULL,
        [username] [varchar](50) NOT NULL,
        [authority] [varchar](50) NOT NULL,
     CONSTRAINT [PK_authorities] PRIMARY KEY CLUSTERED 
    (
        [id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    SET ANSI_PADDING OFF
    GO
    
    --建立users表--
    USE [yidongyi]
    GO
    
    /****** Object:  Table [dbo].[users]    Script Date: 07/03/2017 13:59:47 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING ON
    GO
    
    CREATE TABLE [dbo].[users](
        [id] [int] IDENTITY(12,1) NOT NULL,
        [username] [varchar](100) NOT NULL,
        [password] [varchar](300) NOT NULL,
        [image] [varchar](200) NOT NULL,
        [enabled] [varchar](100) NOT NULL,
     CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED 
    (
        [id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    SET ANSI_PADDING OFF
    GO
    
    ALTER TABLE [dbo].[users] ADD  CONSTRAINT [DF_users_image]  DEFAULT ('') FOR [image]
    GO
    
    ALTER TABLE [dbo].[users] ADD  CONSTRAINT [DF_users_enabled]  DEFAULT ('1') FOR [enabled]
    GO
    
    --建立news表--
    USE [yidongyi]
    GO
    
    /****** Object:  Table [dbo].[news]    Script Date: 07/03/2017 14:00:21 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING ON
    GO
    
    CREATE TABLE [dbo].[news](
        [id] [int] NOT NULL,
        [title] [varchar](50) NOT NULL,
        [img] [varchar](50) NOT NULL,
        [content] [varchar](200) NOT NULL,
        [datetime] [date] NOT NULL,
     CONSTRAINT [PK_news] PRIMARY KEY CLUSTERED 
    (
        [id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    SET ANSI_PADDING OFF
    GO

4.四、PostgreSQL數據源配置

4.4.一、首先在pom.xml文件中添加PostgreSQL的依賴包(這裏用的是postgresql 版本9.4.1208-jdbc42-atlassian-hosted),以下

<dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4.1208-jdbc42-atlassian-hosted</version>
    </dependency>

4.4.二、 接着在application.properties 文件夾下添加對PostgreSQL數據源的配置,以下:

spring.datasource.url = jdbc:postgresql://localhost:5432/yidongyi  
    spring.datasource.username=postgres
    spring.datasource.password=123456

4.4.三、最後在PostgreSQL數據庫中建立表以及約束:

--建立users表--
    
    CREATE TABLE public.users
    (
        id integer NOT NULL DEFAULT nextval('users_id_seq'::regclass),
        image text COLLATE pg_catalog."default" NOT NULL DEFAULT ''::text,
        password text COLLATE pg_catalog."default" NOT NULL,
        username text COLLATE pg_catalog."default" NOT NULL,
        enabled text COLLATE pg_catalog."default" NOT NULL DEFAULT 1,
        CONSTRAINT users_pkey PRIMARY KEY (id)
    )
    WITH (
        OIDS = FALSE
    )
    TABLESPACE pg_default;
    
    ALTER TABLE public.users
        OWNER to postgres;
        
    --建立authorities表--
    
    CREATE TABLE public.authorities
    (
        id integer NOT NULL DEFAULT nextval('authorities_id_seq'::regclass),
        username text COLLATE pg_catalog."default" NOT NULL,
        authority text COLLATE pg_catalog."default" NOT NULL,
        CONSTRAINT authorities_pkey PRIMARY KEY (id)
    )
    WITH (
        OIDS = FALSE
    )
    TABLESPACE pg_default;
    
    ALTER TABLE public.authorities
        OWNER to postgres;
        
    --建立news表--
    
    CREATE TABLE public.news
    (
        id integer NOT NULL DEFAULT nextval('news_id_seq'::regclass),
        title text COLLATE pg_catalog."default" NOT NULL,
        img text COLLATE pg_catalog."default" NOT NULL,
        content text COLLATE pg_catalog."default" NOT NULL,
        datetime date NOT NULL,
        CONSTRAINT news_pkey PRIMARY KEY (id)
    )
    WITH (
        OIDS = FALSE
    )
    TABLESPACE pg_default;
    
    ALTER TABLE public.news
        OWNER to postgres;

4.五、最終效果

4.5.一、 MysSQL

image

4.5.二、 Oracle

image

4.5.三、 MSSQL

image

4.5.四、 PostgreSQL

image

相關文章
相關標籤/搜索