1、移动易后台实现外部数据库连接
要实现外置数据库,即上层开发人员不关心下层数据库的实现,在Spring boot项目 中需要针对不同数据库修改application.properties文件以及在项目中添加依赖包 。本文主要介绍移动易后台如何实现同不同数据源的连接,数据源包括MySQL,Oracle,MSSQL,PostgreSQL。
2、前期准备
Java 8
熟悉Maven项目
熟悉Spring boot
数据及驱动包如下表(数据库安装及配置见官网教程)
数据库 | 版本 | 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、具体实现步骤
3.1、首先将项目git至本地,命令如下:
git clone https://git.oschina.net/sectong/yidongyi.git
3.2、将下载的项目import至eclipse中
- file->import->git->existing local repository
- 项目结构如下
3.3、右击项目team->switch to ->new branch针对不同的数据库创建不同的分支,如下所示:
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
效果如下:
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,
[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.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;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。