feat: complate database & web

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2020-06-20 16:39:03 +08:00
parent 842335edbe
commit bf3638dda0
15 changed files with 201 additions and 56 deletions

View File

@@ -1,9 +1,33 @@
/// <reference types="@ccms/types/dist/typings/spring" />
import { Model } from './model'
const HikariDataSource = Java.type('com.zaxxer.hikari.HikariDataSource')
const HikariConfig = Java.type('com.zaxxer.hikari.HikariConfig')
const JdbcTemplate = Java.type('org.springframework.jdbc.core.JdbcTemplate')
/**
* 数据库配置
*/
export interface DataBaseConfig {
/**
* 数据库连接串
*/
url: string | javax.sql.DataSource
/**
* 数据库驱动
*/
driverClassName?: string
/**
* 用户名
*/
username?: string
/**
* 密码
*/
password?: string
}
/**
* 数据库封装类
*/
@@ -11,24 +35,27 @@ export class DataBase {
private dataSource: javax.sql.DataSource
private jdbcTemplate: org.springframework.jdbc.core.JdbcTemplate
constructor(url: string | javax.sql.DataSource, username?: string, password?: string) {
if (!url) { throw new Error('DataBase url can\'t be null!') }
this.createDataSource(url, username, password)
constructor(dbConfig: DataBaseConfig) {
if (!dbConfig.url) { throw new Error('DataBase url can\'t be null!') }
this.createDataSource(dbConfig)
this.initialize()
}
private createDataSource(url: string | javax.sql.DataSource, username?: string, password?: string) {
if (typeof url === "string") {
if (!username || !password) {
private createDataSource(dbConfig: DataBaseConfig) {
if (typeof dbConfig.url === "string") {
if (!dbConfig.username || !dbConfig.password) {
throw new Error('DataBase username or password can\'t be null!')
}
let config = new HikariConfig()
config.setUsername(username)
config.setPassword(password)
config.setJdbcUrl(url)
if (dbConfig.driverClassName) {
config.setDriverClassName(dbConfig.driverClassName)
}
config.setUsername(dbConfig.username)
config.setPassword(dbConfig.password)
config.setJdbcUrl(dbConfig.url)
this.dataSource = new HikariDataSource(config)
} else {
this.dataSource = url
this.dataSource = dbConfig.url
}
}
@@ -41,7 +68,21 @@ export class DataBase {
* @param sql SQL语句
*/
query<T>(sql: string, ...args: any[]): Array<T> {
return this.jdbcTemplate.queryForList(sql, args)
let startTime = Date.now()
let result = Java.from(this.jdbcTemplate.queryForList(sql, args))
console.debug(java.lang.String.format(`\n[DB] query \nSQL : ${sql.replace(/\?/ig, '%s')} \nCOST : ${Date.now() - startTime}ms`, args))
return result
}
/**
* 执行SQL更新
* @param sql SQL语句
*/
update(sql: string, ...args: any[]): number {
let startTime = Date.now()
let result = this.jdbcTemplate.update(sql, args)
console.debug(java.lang.String.format(`\n[DB] update \nSQL : ${sql.replace(/\?/ig, '%s')} \nCOST : ${Date.now() - startTime}ms`, args))
return result
}
close() {