diff --git a/README.md b/README.md
index fcfe50487eb4f8bafcaa1f2dd5ab3df72db4cb7b..3930987bad23d90ac3d24a008574d5231dc163d9 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,9 @@
-
+
-
+
@@ -17,6 +17,7 @@ Oauth2 Client通常是要被保护的资源,例如app接口。配套的Oauth2
支持的关系型数据库:
- PostgreSQL
- MySQL
+- Oracle
已实现的功能:
1. token保存到关系型数据库;
@@ -53,7 +54,8 @@ Oauth2 Client通常是要被保护的资源,例如app接口。配套的Oauth2
## 更新日志
### v1.2.4.alpha(2018-08-11)
- 代码生成器配置文件`code-gen.properties`;
-- 修复mysql建表语句bug。
+- 修复mysql建表语句bug;
+- 添加对Oracle的支持。
### v1.2.3(2018-08-05)
- 内置代码生成器;
@@ -80,11 +82,15 @@ Oauth2 Client通常是要被保护的资源,例如app接口。配套的Oauth2
请执行`src/main/resources/schema-pg.sql`,完成数据表的创建和测试数据的导入。
- MySQL
请执行`src/main/resources/schema-mysql.sql`,完成数据表的创建和测试数据的导入。
+- Oracle
+请执行`src/main/resources/schema-oracle.sql`,完成数据表的创建和测试数据的导入。
### 2. 修改数据库连接信息
- PostgreSQL
连接信息在`application-pg.yml`里。修改完数据库连接信息后,还需要设置`application.yml`的`spring.profiles.active=pg`。
- MySQL
连接信息在`application-mysql.yml`里。修改完数据库连接信息后,还需要设置`application.yml`的`spring.profiles.active=mysql`。
+- Oracle
+连接信息在`application-oracle.yml`里。修改完数据库连接信息后,还需要设置`application.yml`的`spring.profiles.active=oracle`。
数据库连接信息的配置项username和password可以经过jasypt加密,也可以直接填明文。若要使用jasypt加密,加密密钥由`jasypt.encryptor.password`配置,你可以使用test目录下的UtilTests工具得到加密字符串。
### 3. 运行
现在,一切已准备就绪。运行项目,当程序成功启动时,即表明你已配置成功。
diff --git a/pom.xml b/pom.xml
index b62194eb8cb27d4542cdbac9ea72e22916e2dedd..9aa474be891d2668b2a34eb2cfe74b74c2cb16e1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -165,6 +165,12 @@
postgresql
runtime
+
+ ojdbc14
+ ojdbc14
+ 10.2.0.3.0
+
+
org.apache.httpcomponents
httpclient
diff --git a/src/main/java/com/simon/common/code/CodeGenerator.java b/src/main/java/com/simon/common/code/CodeGenerator.java
index f5efe489a36247444198a20005e072b8e993cb9f..d5f7496ae0809ec33590980e97e022fdf56fe9b4 100644
--- a/src/main/java/com/simon/common/code/CodeGenerator.java
+++ b/src/main/java/com/simon/common/code/CodeGenerator.java
@@ -31,10 +31,6 @@ public class CodeGenerator {
private static String MAPPER_INTERFACE_REFERENCE;//Mapper插件基础接口的完全限定名(第二步提到的核心继承接口Mapper)
/*数据库配置*/
- /*private static final String JDBC_URL = "jdbc:postgresql://127.0.0.1:5432/thymeltetest?useUnicode=true&characterEncoding=UTF-8";//数据库url
- private static final String JDBC_USERNAME = "postgres";
- private static final String JDBC_PASSWORD = "19961120";
- private static final String JDBC_DIVER_CLASS_NAME = "org.postgresql.Driver";*/
private static String JDBC_URL;//数据库url
private static String JDBC_USERNAME;
private static String JDBC_PASSWORD;
diff --git a/src/main/resources/application-mysql.yml b/src/main/resources/application-mysql.yml
index fd77996ab765e7922384c91d0e2375056f753cfb..8cb745da048b89dddc35097f16a6250ce100e0d6 100644
--- a/src/main/resources/application-mysql.yml
+++ b/src/main/resources/application-mysql.yml
@@ -5,6 +5,8 @@ spring:
url: jdbc:mysql://127.0.0.1:3306/thymelte?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: ENC(YiYjVwTulDGN//YaB3KbuA==) #明文root
password: ENC(BZUIhx1tIC75T4JTYROwbsPIRuhrPQMx) #明文19941017
+ druid:
+ validation-query: SELECT 1
#pagehelper分页插件
pagehelper:
diff --git a/src/main/resources/application-oracle.yml b/src/main/resources/application-oracle.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3a3e402bbee74cc292d3160a6a0235959ee445b1
--- /dev/null
+++ b/src/main/resources/application-oracle.yml
@@ -0,0 +1,51 @@
+spring:
+ datasource:
+ # Oracle连接信息
+ driver-class-name: oracle.jdbc.driver.OracleDriver
+ url: jdbc:oracle:thin:@localhost:1521:orcl
+ username: thymelte #明文thymelte
+ password: thymelte123456 #明文thymelte123456
+ druid:
+ validation-query: select 1 from dual
+
+#pagehelper分页插件
+pagehelper:
+ reasonable: true
+ params: count=countSql
+ # oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012
+ helper-dialect: oracle
+ support-methods-arguments: true
+
+mybatis-plus:
+ # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/mapper/*Mapper.xml
+ # 如果是放在resource目录 classpath:/mapper/*Mapper.xml
+ mapper-locations: classpath:/mapping/*Mapper.xml
+ #实体扫描,多个package用逗号或者分号分隔
+ type-aliases-package: com.simon.model
+ global-config:
+ #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+ id-type: 2
+ #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+ field-strategy: 2
+ #驼峰下划线转换
+ db-column-underline: true
+ #mp2.3+ 全局表前缀 mp_
+ #table-prefix: mp_
+ #刷新mapper 调试神器
+ refresh-mapper: true
+ #数据库大写下划线转换
+ #capital-mode: true
+ # Sequence序列接口实现类配置
+ key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
+ #逻辑删除配置(下面3个配置)
+ logic-delete-value: 1
+ logic-not-delete-value: 0
+ sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
+ #自定义填充策略接口实现
+ # meta-object-handler: com.baomidou.springboot.MyMetaObjectHandler
+ configuration:
+ #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
+ map-underscore-to-camel-case: true
+ cache-enabled: false
+ #配置JdbcTypeForNull, oracle数据库必须配置
+ jdbc-type-for-null: 'null'
\ No newline at end of file
diff --git a/src/main/resources/application-pg.yml b/src/main/resources/application-pg.yml
index 7741c713b4824a6ff2dc7ab5c7420c1704c4bf76..78566edfd1c3f6e7714c8d58274e54774e60bfe4 100644
--- a/src/main/resources/application-pg.yml
+++ b/src/main/resources/application-pg.yml
@@ -1,10 +1,12 @@
spring:
datasource:
-# PostgreSQL连接信息
+ # PostgreSQL连接信息
driver-class-name: org.postgresql.Driver
- url: jdbc:postgresql://127.0.0.1:5432/thymeltetest?useUnicode=true&characterEncoding=UTF-8
+ url: jdbc:postgresql://127.0.0.1:5432/thymelte?useUnicode=true&characterEncoding=UTF-8
username: ENC(hTpbG9fq+7P3SntmXuNtDxbtWDqRuPV+) #明文postgres
password: ENC(abdq6LyOspryFQHCqzEMTxRozyJVjIA4) #明文19961120
+ druid:
+ validation-query: SELECT 1
#pagehelper分页插件
pagehelper:
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 3e2f6ec6238d8b93444d5f00700df87a6209272c..7e3da00dc16c7a99a64234011f0793c4faa85e61 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,7 +5,7 @@ security:
enabled: false
spring:
profiles:
- active: pg #pg, mysql。默认使用PostgreSQL数据库连接配置。
+ active: pg #pg, mysql, oracle。默认使用PostgreSQL数据库连接配置。
thymeleaf:
prefix: classpath:/templates/ #默认值
suffix: .html
@@ -24,7 +24,6 @@ spring:
min-idle: 3
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
- validation-query: SELECT 'x'
remove-abandoned: true
remove-abandoned-timeout: 180
connection-properties: clientEncoding=UTF-8
diff --git a/src/main/resources/code-gen.properties b/src/main/resources/code-gen.properties
index dc6edc5bd0dbf86efa3f706731d8e7f4a85c6f37..2809af24e2109a0683543fa6a3bc7825f873aee8 100644
--- a/src/main/resources/code-gen.properties
+++ b/src/main/resources/code-gen.properties
@@ -1,8 +1,22 @@
#
+# MySQL
jdbc_url=jdbc:mysql://127.0.0.1:3306/thymelte?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc_username=root
jdbc_password=19941017
jdbc_driver_class_name=com.mysql.jdbc.Driver
+
+# PostgreSQL
+#jdbc_url=jdbc:postgresql://127.0.0.1:5432/thymelte?useUnicode=true&characterEncoding=UTF-8
+#jdbc_username=postgres
+#jdbc_password=19961120
+#jdbc_driver_class_name=org.postgresql.Driver
+
+# Oracle
+#jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl
+#jdbc_username=thymelte
+#jdbc_password=thymelte123456
+#jdbc_driver_class_name=oracle.jdbc.driver.OracleDriver
+
# ߣɵĴ@authorע
author=SimonSun
# ɵjavaļ洢·
diff --git a/src/main/resources/schema-oracle.sql b/src/main/resources/schema-oracle.sql
new file mode 100644
index 0000000000000000000000000000000000000000..01c0af6be744945c18ec9108a14111f816a5cdd8
--- /dev/null
+++ b/src/main/resources/schema-oracle.sql
@@ -0,0 +1,161 @@
+-- used in tests that use HSQL
+create table oauth_client_details (
+ client_id VARCHAR(256) PRIMARY KEY,
+ resource_ids VARCHAR(256),
+ client_secret VARCHAR(256),
+ scope VARCHAR(256),
+ authorized_grant_types VARCHAR(256),
+ web_server_redirect_uri VARCHAR(256),
+ authorities VARCHAR(256),
+ access_token_validity INTEGER,
+ refresh_token_validity INTEGER,
+ additional_information VARCHAR(4000),
+ autoapprove VARCHAR(256)
+);
+
+create table oauth_client_token (
+ token_id VARCHAR(256),
+ token BLOB,
+ authentication_id VARCHAR(256) PRIMARY KEY,
+ user_name VARCHAR(256),
+ client_id VARCHAR(256)
+);
+
+create table oauth_access_token (
+ token_id VARCHAR(256),
+ token BLOB,
+ authentication_id VARCHAR(256) PRIMARY KEY,
+ user_name VARCHAR(256),
+ client_id VARCHAR(256),
+ authentication BLOB,
+ refresh_token VARCHAR(256)
+);
+
+create table oauth_refresh_token (
+ token_id VARCHAR(256),
+ token BLOB,
+ authentication BLOB
+);
+
+create table oauth_code (
+ code VARCHAR(256), authentication BLOB
+);
+
+create table oauth_approvals (
+ userId VARCHAR(256),
+ clientId VARCHAR(256),
+ scope VARCHAR(256),
+ status VARCHAR(10),
+ expiresAt TIMESTAMP,
+ lastModifiedAt TIMESTAMP
+);
+
+-- customized oauth_client_details table
+create table ClientDetails (
+ appId VARCHAR(256) PRIMARY KEY,
+ resourceIds VARCHAR(256),
+ appSecret VARCHAR(256),
+ scope VARCHAR(256),
+ grantTypes VARCHAR(256),
+ redirectUrl VARCHAR(256),
+ authorities VARCHAR(256),
+ access_token_validity INTEGER,
+ refresh_token_validity INTEGER,
+ additionalInformation VARCHAR(4000),
+ autoApproveScopes VARCHAR(256)
+);
+
+CREATE TABLE users (
+ id number(38) NOT NULL PRIMARY KEY,
+ username varchar(255) NOT NULL,
+ password varchar(255) NOT NULL,
+ enabled char(1) NOT NULL,
+ phone varchar(255) DEFAULT NULL UNIQUE,
+ email varchar(255) DEFAULT NULL UNIQUE,
+ address varchar(255),
+ age int,
+ birth varchar(255),
+ head_photo varchar(255),
+ person_brief varchar(255),
+ sex char(1),
+ visit_card varchar(255)
+);
+CREATE SEQUENCE USERS_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
+
+CREATE TABLE authorities (
+user_id number(38) NOT NULL,
+authority VARCHAR(50) NOT NULL
+);
+
+-- 登录日志
+CREATE TABLE log_login (
+id number(38) NOT NULL PRIMARY KEY,
+create_time DATE,
+ip varchar(255),
+username varchar(255)
+);
+CREATE SEQUENCE LOG_LOGIN_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
+
+-- 重置密码
+CREATE TABLE reset_pwd_info (
+id number(38) NOT NULL primary key,
+expires_in DATE,
+secret_key varchar(255),
+user_id number(38),
+valid char(1) NOT NULL
+);
+CREATE SEQUENCE RESET_PWD_INFO_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
+
+-- 验证码
+CREATE TABLE veri_code (
+id number(38) NOT null primary key,
+code int,
+create_time int,
+expires int,
+phone varchar(255)
+);
+CREATE SEQUENCE VERI_CODE_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
+
+-- 二维码(用于扫码登录)
+CREATE TABLE qr_code (
+id number(38) not null primary key,
+is_ok char(1),
+sid varchar(255),
+token varchar(255),
+username varchar(255)
+);
+CREATE SEQUENCE QR_CODE_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
+
+-- 新闻
+CREATE TABLE news_info (
+id number(38) not null primary key,
+title varchar(255),
+user_id number(38),
+status int,
+content VARCHAR2(1024),
+image_url varchar(255),
+publish_date DATE,
+tags varchar(255)
+);
+CREATE SEQUENCE NEWS_INFO_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
+
+-- 新闻标签
+CREATE TABLE news_tag (
+id number(38) not null primary key,
+news_info_id number(38),
+tag_id number(38)
+);
+CREATE SEQUENCE NEWS_TAG_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
+
+CREATE UNIQUE INDEX ix_auth_username ON authorities(user_id, authority);
+
+ALTER TABLE authorities add CONSTRAINT fk_authorities_users FOREIGN KEY (user_id) REFERENCES users (id);
+
+INSERT INTO users (id, username, password, enabled, email, phone) VALUES (1, 'jeesun', '$2a$11$t4akVchfgOv00XxB/ZKLlOmweUoL/Aed4CiJqQjaiRLZpBU3AWfxu', 1, 'simon.sun.dev@hotmail.com', '18362102427');
+INSERT INTO users (id, username, password, enabled, email, phone) VALUES (2, 'user2711', '$2a$11$BUiKPp8.pcym7sxXYPvZeOjl0BOoVl3PZT.1Wfb3kmIgooO/GfQ4G', 1, '18860902711@163.com', '18860902711');
+INSERT INTO users (id, username, password, enabled, email, phone) VALUES (3, 'user6745', '$2a$11$a7XDbu2RvLjZdr4kCvqh2u7gwVXhwxdauIzbX3ZizbBU.HeV8BOky', 1, null, '18550046745');
+
+INSERT INTO authorities VALUES (1, 'ROLE_ADMIN');
+INSERT INTO authorities VALUES (1, 'ROLE_USER');
+INSERT INTO authorities VALUES (2, 'ROLE_USER');
+INSERT INTO authorities VALUES (3, 'ROLE_USER');
\ No newline at end of file