From 200a2f07e1cc03c0c55fa0c3582e5ad16b7f7eda Mon Sep 17 00:00:00 2001 From: SimonSun Date: Sun, 12 Aug 2018 16:12:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9oracle=E7=9A=84?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 + .../com/simon/common/code/CodeGenerator.java | 4 - src/main/resources/application-mysql.yml | 2 + src/main/resources/application-oracle.yml | 51 ++++++ src/main/resources/application-pg.yml | 6 +- src/main/resources/application.yml | 3 +- src/main/resources/code-gen.properties | 14 ++ src/main/resources/schema-oracle.sql | 161 ++++++++++++++++++ 8 files changed, 239 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/application-oracle.yml create mode 100644 src/main/resources/schema-oracle.sql diff --git a/pom.xml b/pom.xml index b62194e..9aa474b 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 f5efe48..d5f7496 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 fd77996..8cb745d 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 0000000..3a3e402 --- /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 7741c71..78566ed 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 3e2f6ec..7e3da00 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 dc6edc5..2809af2 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 0000000..01c0af6 --- /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 -- Gitee From 1055f12a1a89d892cfde5d4f60d3944436a92d25 Mon Sep 17 00:00:00 2001 From: SimonSun Date: Sun, 12 Aug 2018 16:15:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fcfe504..3930987 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. 运行 现在,一切已准备就绪。运行项目,当程序成功启动时,即表明你已配置成功。 -- Gitee