移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索

1、移动易后台实现外部数据库连接

要实现外置数据库,即上层开发人员不关心下层数据库的实现,在Spring boot项目 中需要针对不同数据库修改application.properties文件以及在项目中添加依赖包 。本文主要介绍移动易后台如何实现同不同数据源的连接,数据源包括MySQL,Oracle,MSSQL,PostgreSQL。

移动易官方网站

2、前期准备

  1. Java 8

  2. 熟悉Maven项目

  3. 熟悉Spring boot

  4. 数据及驱动包如下表(数据库安装及配置见官网教程)

数据库版本JDBC驱动包下载地址
MySQL64位 MySQL14.14mysql-connector-java(5.1.41)download
Oracle64位 Oracle 11g 11.2.0.1.0ojdbc14(10.2.03)download
MSSQL64位 Microsoft SQL Server 2008 (SP1) – 10.0.2531.0sqljdbc4(4.0)download
PostgreSQL64位 PostgreSQL 9.6postgresql(9.4.1208-jdbc42-atlassian-hosted)download

3、具体实现步骤

3.1、首先将项目git至本地,命令如下:


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

3.2、将下载的项目import至eclipse中

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

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

- 项目结构如下  

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

3.3、右击项目team->switch to ->new branch针对不同的数据库创建不同的分支,如下所示:

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

3.4、配置每个数据源

4、数据源配置

4.1、MySQL数据源配置

4.1.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.2、在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.3、执行相应的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.2、Oracle数据源的配置

4.2.1、 由于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.2、接着就是将下载好的驱动包手动添加到maven本地仓库,打开cmd窗口,将目录切换到驱动包所在的目录,接着调用如下命令:


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

效果如下:

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

4.2.3、接着在application.properties 文件夹中添加Oracle数据库的配置信息


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

4.2.4、最后在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.3、MSSQL 数据源的配置

4.3.1、首先添加依赖包(这里用的是sqljdbc4 版本4.0),双击pom.xml文件,添加如下依赖:


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

4.3.2、接着在application.properties 文件中添加对数据源的配置,如下:


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

4.3.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,
        

[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.4、PostgreSQL数据源配置

4.4.1、首先在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.2、 接着在application.properties 文件夹下添加对PostgreSQL数据源的配置,如下:


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

4.4.3、最后在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.5、最终效果

4.5.1、 MysSQL

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

4.5.2、 Oracle

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

4.5.3、 MSSQL

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

4.5.4、 PostgreSQL

《移动易开源APP组合套件更新——支持多种外部数据库,支持全文搜索》

    原文作者:jiekechoo
    原文地址: https://segmentfault.com/a/1190000010301520
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞