SimplifyDb
在java 中我們有多種方式操作數(shù)據(jù)庫,但是如果只是為了簡單處理使用一些框架,在使用中還是顯得麻煩奸柬。這里就整理一個簡單快速操作數(shù)據(jù)庫的一種方案
簡介
SimplifyDb 是一個Java基于druid的一款簡化寫sql語句操作mysql的框架偎捎。本項目主要采用反射讀寫需要操作的實體和表,同時項目還是提供多種主鍵生成器和自定義主鍵生成器接口方便用戶根據(jù)實際業(yè)務擴展主鍵生成器
項目特點
1. 快速配置和操作多數(shù)據(jù)庫
2. 多數(shù)據(jù)源配置自動切換
3. 提供多種主鍵生成器以及自定義主鍵生成器
4. 全局統(tǒng)一記錄數(shù)據(jù)創(chuàng)建人和修改人
5. 快速配置邏輯刪除功能
6. 寫操作支持異步執(zhí)行
使用示例:https://gitee.com/jiangzeyin/simplifydb-demo
文檔
安裝
Maven
在項目的pom.xml的dependencies中加入以下內(nèi)容:
<dependency>
<groupId>cn.simplifydb</groupId>
<artifactId>simplifydb</artifactId>
<version>version</version>
</dependency>
注:VERSION 請更換為公共maven庫最新的版本號
版本變更
提供bug反饋或建議
項目特點描述:(使用druid 連接池)
1.支持多數(shù)據(jù)源
2.多數(shù)據(jù)源支持讀寫分離 和 隨機落取
3.接口形式記錄日志
4.接口形式獲取當前操作用戶
5.增 刪 改 可以使用異步執(zhí)行
6.對外提供 增 刪 改 執(zhí)行過程中的接口調(diào)用
7.自動記錄當前最后修改數(shù)據(jù)人 創(chuàng)建數(shù)據(jù)人和時間
8.自動記錄數(shù)據(jù)最后修改數(shù)據(jù)時間(和第5點不沖突)
歡迎━(`?′)ノ亻!大家測評
cn.simplifydb.database.config.DataSourceConfig 工具使用配置類
cn.simplifydb.system.DbLog 工具日志為了各個項目適配讳癌,使用了接口形式來提供記錄日志
cn.simplifydb.database.run.read.IsExists 判斷是否存在
cn.simplifydb.database.run.read.Select 多種方式查詢
cn.simplifydb.database.run.read.SelectFunction 查詢函數(shù)
cn.simplifydb.database.run.read.SelectPage 分頁查詢
cn.simplifydb.database.run.write.Insert 添加數(shù)據(jù)
cn.simplifydb.database.run.write.Remove 刪除數(shù)據(jù)
cn.simplifydb.database.run.write.Update 修改數(shù)據(jù)
cn.simplifydb.database.run.write.Transaction 事物操作
示例配置:(db.properties)
sourceTag=core
configPath=file:/test/read.properties
systemKey=com.yoke
systemKeyColumn=url,username,password
#
lastModify.time=UNIX_TIMESTAMP(NOW())
lastModify.class=com.yoke.entity.EditOptBaseEntity,com.yoke.entity.AdminOptBaseEntity
lastModify.column.user=lastModifyUser
lastModify.column.time=lastModifyTime
#
create.class=com.yoke.entity.AdminOptBaseEntity
create.column.user=createUser
#
systemColumn.pwd=pwd
systemColumn.active=isDelete
systemColumn.active.value=0
systemColumn.inActive.value=1
#
systemColumn.modify.status=true
systemColumn.modify.column=modifyTime
systemColumn.modify.time=UNIX_TIMESTAMP(NOW())
#
systemColumn.notPutUpdate=modifyTime,isDelete,createTime,createUser,lastModifyUser,lastModifyTime,id
systemColumn.columnDefaultValue=modifyTime:UNIX_TIMESTAMP(NOW()),createTime:UNIX_TIMESTAMP(NOW())
systemColumn.writeDefaultRemove=createUser,lastModifyUser,lastModifyTime,id,isDelete
systemColumn.readDefaultRemove=pwd
systemColumn.selectDefaultColumns=*
#
systemColumn.defaultRefKeyName=id
systemColumn.defaultKeyName=id
sourceTag,configPath 為必需字段
其他字段均根據(jù)自己實際情況配置
systemKey 為configPath 中加密的密鑰
systemKeyColumn 為configPath 中哪些字段是為加密的字段
實例配置:(file:/test/read.properties)
core.driver=com.mysql.jdbc.Driver
core.url=1953342c4b
core.username=12b0ecd
core.password=9085ada2469
core.init=true
core.maxActive=10000
core.validationQuery=SELECT 'x'
core.testOnReturn=false
core.testOnBorrow=false
core.testWhileIdle=true
core.minIdle=30
core.initialSize=1
core.removeAbandoned=true
core.removeAbandonedTimeout=60
core.logAbandoned=true
配置字段具體含義請 查看https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8
初始化:
1.先設置日志接口
cn.simplifydb.system.DbLog.setDbLogInterface()
方法傳入cn.simplifydb.system.DbLog.DbLogInterface 接口主要負責記錄util 執(zhí)行日志
2.開始初始化數(shù)據(jù)庫連接
cn.simplifydb.database.config.DataSourceConfig.init() 參數(shù)為配置文件的路徑
支持file: 穿稳、classpath:
3.設置實體轉(zhuǎn)換數(shù)據(jù)庫接口(根據(jù)class 獲取該實體存在的數(shù)據(jù)源中)
cn.simplifydb.database.DbWriteService.setWriteInterface()
方法傳入cn.simplifydb.database.DbWriteService.WriteInterface 接口主要負責處理實體對應的數(shù)據(jù)源標記和實體數(shù)據(jù)庫表名
</pre>
<nav class="octotree_sidebar ui-resizable octotree_oschina_sidebar" style="box-sizing: border-box; overflow: visible; top: 0px; right: 0px; left: 0px; bottom: 0px; border-right: none; z-index: 1000001; transition: transform 0.2s ease; transform: translate3d(-100%, 0px, 0px); position: fixed !important; padding-top: 54px; background-color: rgb(247, 247, 247); width: 373px;">[](javascript:void(0))
</nav>