sumk-db的原生入口類有DB(ORM)、SDBjava
目的:redis
ORM的公共功能sql
大小寫:大小寫不敏感。數據庫
字段名:ORM用的是java字段。RawDB、NamedDB用的是原生數據庫字段緩存
failIfPropertyNotMapped這個實際上是代碼檢查,爲了防止開發人員寫錯map中的key。默認狀況下,當使用map的時候,若是map的某個key不是pojo中的字段名,就會拋出異常。設爲false會禁用這個異常。本設置只對當前select有效session
tableClass若是尚未用過pojo作參數,就用Map<String,Object>作參數,就得調用本法。它的參數是使用了@Table作註解的pojo對象。確保起見,在用map做參數的時候,都調用一次本方法。tableClass能夠是pojo所屬的類,也能夠是所屬類的子類mybatis
execute全部的修改操做,都要調用execute()才最終執行。好比DB.insert(pojo),它只是DB.insert().insert(pojo)的簡寫,也須要調用execute()才能執行app
Selectless
DB採用的是懶執行模式,select只有在queryList、queryOne、count時才執行。性能
count和query能夠一塊兒使用,好比:
Select select=DB.Select()…
int c=select.count();
List list=select.queryList();
addEqual:
比較:
allowEmptyWhere 默認狀況下,select必需要有where條件。設爲false就能夠查詢整張表。若是使用軟刪除,查詢的是全部有效記錄,被刪除的記錄不會查詢出來。若是要查詢已經被刪除的記錄,要使用RawDB或NamedDB
resultHandler返回值的處理方式,默認是List<pojo>。使用MapResultHandler.handler做爲參數,就能夠返回List<Map<String,Object>>
bigThan大於的意思,有2種重載方式,一種參數是bigThan(String p,Object v),它表示組裝sql的時候,會有相似p>v的條件出現。另外一種是bigThan(map),它表示組裝sql的時候,會有相似(key1>v1 AND key2>v2)的條件出現。bigThan(String p,Object v)能夠屢次調用,屢次調用的效果,相似於調用一次bigThan(map)。bigThan(map)不可屢次調用,屢次調用的話,後調用的會覆蓋前面的;並且它也會覆蓋以前調用的bigThan(String p,Object v)
bigOrEqual是大於等於,使用方式與bigThan相同
lessThan 是小於的意思,使用方式與bigThan相同
lessOrEqual是小於等於的意思,使用方式與bigThan相同
orderByAsc根據參數字段升序排序,參數是java的field,大小寫敏感
orderByDesc降序排序
升序降序能夠屢次調用,越早調用的,優先級越高(這是sql決定的)
offset limit起始位置的偏移量,以及返回的記錄數。可使用Paged對象將「第幾頁」這種頁面表示轉化成offset表示
selectColumns指定返回的列,通常無需調用。目前版本中,它並不節省數據庫開銷,將來有可能
fromCache若是爲false,將強制進行數據庫查詢
parseNULL若是爲true,在判斷是否相等時,會將null值解析成is null。不然將忽略null值(默認)
byPrimaryId根據數據庫主鍵列表查詢,只能在單主鍵的表中使用
byRedisId根據redis主鍵列表查詢,只能應用於redis單主鍵的狀況
tableClass若是參數是map,要在設置map參數前調用本方法,只須要調用一次就好了
Insert
插入數據庫,同時修改redis緩存。若是是數字類型的單主鍵,不須要顯示設置主鍵,系統會自動生成主鍵。若是設置了,就用你設置的那個主鍵。
insert本方法的參數是要插入的記錄,能夠是pojo對象,也能夠是map
Update
updateDBID默認狀況下,數據庫的主鍵收到保護,不會被更新。將它設爲false,就能夠更新主鍵
addWhere添加查詢條件,若是沒有顯式調用本方法,就會使用updateTo參數中的主鍵(數據庫主鍵或redis主鍵)做爲where條件
byDBID調用本方法,addWhere爲空時,根據數據庫主鍵更新。本方法是系統默認,通常不須要調用
byCacheID調用本方法後,addWhere爲空時,根據redis主鍵更新。若是addWhere不爲空,調用本方法無實際做用
updateTo更新後的狀態,要注意所有更新和部分更新的差異。DB.update(**)等價於DB.update().updateTo(**)。若是使用DB.update()方法初始化的,本方法必須被調用
execute最終執行,若是不調用本方法,上面的操做都沒有實際做用
fullUpdate默認是部分更新,若是設置爲true,就會全局更新。它對updateTo()中的參數起做用
incrNum增長某個字段的值,若是要減小,用負數就好了。name參數指的是java的字段名,大小寫敏感。設置了該屬性,updateTo參數中相同字段的值將被忽略。該方法能夠被屢次調用。
Delete
屬性 |
含義 |
value |
表名。爲空時,就是小寫的類名 |
duration |
在緩存中保留的時間,單位秒。0表示使用全局設置,小於0表示不過時 |
preInCache |
爲空使用類名,通常使用默認就好 |
maxBeats |
訪問多少次以後刷新緩存,0表示使用全局默認,小於0表示不刷新 |
cacheType |
SINGLE:每一個redis鍵對應一條記錄 LIST:每一個redis鍵對應一個List NOCACHE:本表不緩存 |
@SoftDelete
屬性 |
含義 |
value |
字段名 |
columnType |
字段屬性,默認是String,還支持Int、Byte、Short、Long |
validValue |
什麼值表示有效。若是是數字類型,會被轉化成數字類型 |
inValidValue |
刪除的時候,會被置爲該值 |
屬性 |
含義 |
value |
數據庫字段的名字,不填的話,就是屬性名(小寫) |
columnType |
|
columnOrder |
越小的,在越前面。值相等的時候,根據數據庫字段名排序.使用默認的就好 |
NORMAL |
默認的,表示普通字段 |
ID_DB |
數據庫主鍵。不容許爲null。在更新的時候,若是沒有顯式設置where條件,主鍵字段將不會被更新 |
ID_CACHE |
redis 主鍵,不容許爲null |
ID_BOTH |
既是數據庫主鍵,也是redis主鍵。不容許爲null |
app.properties中的一些配置
屬性名 |
含義 |
默認值 |
sumk.sql.fromCache |
1表示會select操做會讀取redis |
1 |
sumk.sql.toCache |
1表示會select操做會更新redis |
1 |
sumk.orm.update.byType |
ID_DB表示根據數據庫主鍵更新,其它標示根據redis主鍵更新 |
ID_DB |
sumk.sql.failIfPropertyNotMapped |
1 表示會檢查字段名跟pojo中定義的是否一致 |
1 |
sumk.db.config.path |
#是數據庫名字 |
classpath: db/#.ini |
http.session.single |
1 表示啓用單處登錄 |
0 |
http.jetty.resource |
靜態文件的目錄 |
空 |
sumk.db.generator |
若是爲1,就會打印建表sql |
0 |
sumk.db.generator.db |
設置了數據庫別名,將會自動生成數據庫表。但要知足2個條件: 一、sumk.db.generator=1 二、該表還未建立,若是表已存在,將不作任何事情 |
SDB: