亚洲欧美日韩熟女|做爱高潮视频网址|国产一区二区三级片|国产Av中文字幕www.性色av|亚洲婷婷永久免费|国产高清中文字幕|欧美变态网站久re视频精品|人妻AV鲁丝第一页|天堂AV一区二区在线观看|综合 91在线精品

使用Javaxa0annotation和反射…

2023-05-22


這種情況在日常開發(fā)中會遇到:
多種類型的對象需要保存在數(shù)據(jù)庫中,每種類型的對象都要建立一個表格,創(chuàng)建表格時的字段、檢索號碼、字段類型都要一一對應(yīng),
如果存儲在數(shù)組中,當(dāng)需要調(diào)整字段時,需要更改數(shù)組。第一,很繁瑣;第二,編號容易出錯,導(dǎo)致程序運行錯誤;第三,很難重用代碼。
為解決以上幾個問題,在實踐探索中想出了通過annotation解決的辦法。
其原理是:
創(chuàng)建表時:需要表名、字段名、字段類型
存儲數(shù)據(jù)時:需要表名、字段名、字段對應(yīng)數(shù)值。
獲取數(shù)據(jù)時:需要表名、字段檢索、存儲值變量
只需提供上述操作所需的信息,即可操作。這些數(shù)據(jù)中的一些可以通過類信息獲得,而另一些可以通過annotation傳輸。

創(chuàng)建annotation類,只要這個annotation類修飾的成員變量被認(rèn)為是需要保存在表格中的。


代碼Java





1.  
2. @Target(ElementType.FIELD)   
3. @Retention(RetentionPolicy.RUNTIME)   
4. public @interface DbField {   
5.    boolean primaryKey() default false;   
6.    boolean notNull() default false;   
7.    String fieldName() default "##default";        
8. }





代碼里的"##default"這是一個自己的協(xié)議,當(dāng)檢查到這個字符串時,自動使用變量名作為字段名,否則使用指定名稱作為字段名。


建立一個要保存在數(shù)據(jù)庫中的普通類別:


代碼Java



1. public class SomeThing {   
2.    @DbField  
3.    public String field_all_default;   
4.       
5.    @DbField (   
6.        primaryKey = true,   
7.        notNull = true,        
8.        fieldName = "specified_field_name"  
9.    )   
10.    public long field_specified_primary_key;   
11.       
12.    @DbField  
13.    public boolean field_boolean;   
14.       
15.    public int not_db_field;   
16. }



public class SomeThing {        @DbField        public String field_all_default;
        @DbField (
                primaryKey = true,
                notNull = true,         
                fieldName = "specified_field_name"
        )
        public long field_specified_primary_key;
        @DbField
        public boolean field_boolean;
        public int not_db_field;
}



以上代碼:


會員變量field_all使用annotation標(biāo)記的_default,并且都使用了初始值,那么在表格中就會建立一個名為field_all這個變量值存儲在_default字段中。


會員變量field_specified_primary用annotation標(biāo)注_key,并指定為主key,不能為空,并指定了其他字段的specified_field_name。


成員變量not_db如果沒有標(biāo)注_field,則不會被存儲。


創(chuàng)建一個數(shù)據(jù)庫操作輔助類,在這個類的函數(shù)中讀取上面的標(biāo)記信息,并根據(jù)標(biāo)記信息進行處理。


3.1 創(chuàng)建表格:


代碼Java


1. private void createTbl(SQLiteDatabase db, String tblName, Class

本文僅代表作者觀點,版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請在文中注明來源及作者名字。

免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時與我們聯(lián)系進行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com