要實現外置數據庫,即上層開發人員不關心下層數據庫的實現,在Spring boot項目 中須要針對不一樣數據庫修改application.properties文件以及在項目中添加依賴包 。本文主要介紹移動易後臺如何實現同不一樣數據源的鏈接,數據源包括MySQL,Oracle,MSSQL,PostgreSQL。html
移動易官方網站java
Java 8mysql
熟悉Maven項目git
熟悉Spring bootspring
數據及驅動包以下表(數據庫安裝及配置見官網教程)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 |
git clone https://git.oschina.net/sectong/yidongyi.git
- file->import->git->existing local repository
- 項目結構以下
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency>
spring.datasource.url=jdbc:mysql://localhost/yidongyi?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true spring.datasource.username=root spring.datasource.password=123456
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;
接着在maven存儲倉庫中(mavenrepository.com)找到對應版本的依賴,以下:數據庫
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.3</version> </dependency>
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3 -Dpackaging=jar -Dfile=ojdbc14.jar
效果以下: oracle
spring.datasource.url = jdbc:oracle:thin:@localhost:1521:ORCL spring.datasource.username=system spring.datasource.password=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 );
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency>
spring.datasource.url=jdbc:sqlserver://localhost:1433;DatabaseName=yidongyi; spring.datasource.username=use_c spring.datasource.password=123456
--建立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
<dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4.1208-jdbc42-atlassian-hosted</version> </dependency>
spring.datasource.url = jdbc:postgresql://localhost:5432/yidongyi spring.datasource.username=postgres spring.datasource.password=123456
--建立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;