Skip to content

Commit b149023

Browse files
committed
不封装数据库了
1 parent b3f9847 commit b149023

13 files changed

Lines changed: 268 additions & 11 deletions

File tree

‎Android_Zone_Lib/src/Android/Zone/Sqlite/Annotation/utils/AnUtils.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ public static String getAnnoColumn_Name_ByField(Field f,Class<?> t){
9393
}
9494
return temp;
9595
}
96+
/**
97+
* 默认长度为 100
98+
* @param f
99+
* @param t
100+
* @return
101+
*/
96102
public static String getAnnoColumn_Length_ByField(Field f,Class<?> t){
97103
String temp=null;
98104
Column anno = f.getAnnotation(Column.class);

‎Android_Zone_Lib/src/Android/Zone/Sqlite/Sqlite_Helper.java‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -322,18 +322,18 @@ private <T> String byClassToGenerateCreateSqlString(Class<T> t)
322322
if (field.getName().equals("id")) {
323323
sb.append(" id INTEGER PRIMARY KEY AUTOINCREMENT ");
324324
} else {
325-
/** 判断类型是 String */
326-
if(TempUtils.typeIsEquals(String.class, field.getGenericType())){
325+
/** 判断类型是 String (现在不判断是什么类型了 仅仅是得到注解的名字 和 长度 )*/
326+
// if(TempUtils.typeIsEquals(String.class, field.getGenericType())){
327327
sb.append(AnUtils.getAnnoColumn_Name_ByField(field, t) + " text("+AnUtils.getAnnoColumn_Length_ByField(field, t)+")");
328-
}
328+
// }
329329
}
330330
} else {
331331
if (field.getName().equals("id")) {
332332
sb.append(" , id INTEGER PRIMARY KEY AUTOINCREMENT ");
333333
} else {
334-
if(TempUtils.typeIsEquals(String.class, field.getGenericType())){
334+
// if(TempUtils.typeIsEquals(String.class, field.getGenericType())){
335335
sb.append(" ," + AnUtils.getAnnoColumn_Name_ByField(field, t) + " text("+AnUtils.getAnnoColumn_Length_ByField(field, t)+")");
336-
}
336+
// }
337337
}
338338
}
339339
i++;

‎Android_Zone_Lib/src/Android/Zone/Sqlite/Sqlite_Utils.java‎

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import java.util.ArrayList;
55
import java.util.Collections;
66
import java.util.List;
7+
78
import com.google.gson.Gson;
9+
810
import Android.Zone.Sqlite.Sqlite_Helper.AddColumnStatue;
911
import Android.Zone.Sqlite.Annotation.utils.AnUtils;
1012
import Android.Zone.Sqlite.GsonEntity.GsonColumn;
@@ -15,6 +17,8 @@
1517
import Android.Zone.Sqlite.TableEntity.TableEntity;
1618
import Android.Zone.Utils.SharedUtils;
1719
import Java.Zone.Log.PrintUtils;
20+
import Java.Zone.Utils.FieldTypeUtils;
21+
import Java.Zone.Utils.FieldTypeUtils.FieldType;
1822
import android.content.Context;
1923
import android.database.sqlite.SQLiteDatabase;
2024
//TODO 实体类id字段的设计 实体类中包含实体类的操作
@@ -447,7 +451,7 @@ public <T> void dropTableByClass(Class<T> t){
447451
}
448452

449453
}
450-
public <T> void createTableByEntity(Class<T> t){
454+
private <T> void createTableByEntity(Class<T> t){
451455
boolean suceess = helper.createTableByEntity(t, getTranDatabase());
452456
if (printLog) {
453457
System.out.println("表:" + AnUtils.getTableAnnoName(t) + "\t 创建陈功了吗"+ suceess);
@@ -467,9 +471,32 @@ public <T> void createTableByEntity(Class<T> t){
467471
@SuppressWarnings({ "unchecked", "rawtypes" })
468472
public <T> void createTableByList(List<Class> classList){
469473
for (Class class1 : classList) {
470-
createTableByEntity(class1);
474+
createTableByClass(class1);
475+
}
476+
}
477+
public <T> void createTableByClass(Class<T> t){
478+
Field[] fields = t.getDeclaredFields();
479+
createTableByEntity(t);
480+
for (Field field2 : fields) {
481+
FieldType entity = FieldTypeUtils.getFieldType(field2);
482+
switch (entity.fieldProperty) {
483+
case CLASS:
484+
case LIST_CLASS:
485+
try {
486+
createTableByClass(Class.forName(entity.classStr));
487+
} catch (ClassNotFoundException e) {
488+
e.printStackTrace();
489+
}
490+
break;
491+
default:
492+
break;
493+
}
471494
}
495+
496+
497+
472498
}
499+
473500
public <T> void addColumn(Class<T> t,String willAddColumnStr,String length){
474501
AddColumnStatue temp = helper.addColumn(t, willAddColumnStr,length,getTranDatabase());
475502
if(temp==AddColumnStatue.Success){

‎Android_Zone_Test/src/com/example/mylib_test/activity/db/Db_MainActivity.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private void onClickTable(View v, DbEntity zeng) {
128128
// Sqlite_Utils.getInstance(MainActivity.this).addColumn(DbEntity.class, "sbshibu");
129129
//修改字段 或者删除字段
130130
// Sqlite_Utils.getInstance(MainActivity.this).updateOrDeleteColumn(DbEntity.class, new String[]{"he"}, new String[]{"hexihuan"});
131-
Sqlite_Utils.getInstance(this).createTableByEntity(DbEntity.class);
131+
Sqlite_Utils.getInstance(this).createTableByClass(DbEntity.class);
132132
// Sqlite_Utils.getInstance(this).createTableByEntity(MbKb.class);
133133
break;
134134

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.example.mylib_test.activity.db.entity;
2+
3+
import Android.Zone.Sqlite.Annotation.Table;
4+
5+
@Table(name = "child")
6+
public class Child {
7+
private String id;
8+
private String gan;
9+
10+
public String getId() {
11+
return id;
12+
}
13+
14+
public void setId(String id) {
15+
this.id = id;
16+
}
17+
18+
public String getGan() {
19+
return gan;
20+
}
21+
22+
public void setGan(String gan) {
23+
this.gan = gan;
24+
}
25+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.example.mylib_test.activity.db.entity;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import Android.Zone.Sqlite.Annotation.Table;
7+
8+
@Table(name = "parent")
9+
public class Parent {
10+
11+
private String id;
12+
private Child child = new Child();
13+
private List<String> strList = new ArrayList<String>();
14+
private List<Child> childList = new ArrayList<Child>();
15+
16+
public String getId() {
17+
return id;
18+
}
19+
20+
public void setId(String id) {
21+
this.id = id;
22+
}
23+
24+
public Child getChild() {
25+
return child;
26+
}
27+
28+
public void setChild(Child child) {
29+
this.child = child;
30+
}
31+
32+
public List<String> getStrList() {
33+
return strList;
34+
}
35+
36+
public void setStrList(List<String> strList) {
37+
this.strList = strList;
38+
}
39+
40+
public List<Child> getChildList() {
41+
return childList;
42+
}
43+
44+
public void setChildList(List<Child> childList) {
45+
this.childList = childList;
46+
}
47+
48+
}

‎Android_Zone_Test/src/com/example/mylib_test/app/config/SqliteConfig.java‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010

1111
import com.example.mylib_test.activity.db.entity.DbEntity;
1212
import com.example.mylib_test.activity.db.entity.MbKb;
13+
import com.example.mylib_test.activity.db.entity.Parent;
1314
public class SqliteConfig {
1415
@SuppressWarnings("rawtypes")
1516
public static List<Class> classList=new ArrayList<Class>();
1617
static{
17-
classList.add(DbEntity.class);
18-
classList.add(MbKb.class);
18+
// classList.add(DbEntity.class);
19+
// classList.add(MbKb.class);
20+
classList.add(Parent.class);
1921
}
2022

2123
public static void initSqlite(final Context context){

‎BaseAndroid_Zone/src/com/zone/cn/Apps.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ private void configureSqlit() {
6363
Sqlite_Utils.init_listener(Apps.this, new OnCreate() {
6464
@Override
6565
public void onCreateTable(Sqlite_Utils instance) {
66-
instance.createTableByEntity(User.class);
66+
instance.createTableByClass(User.class);
6767
}
6868
}, new OnUpgrade() {
6969
@Override

‎JavaLib_Zone/src/Java/Zone/Log/PrintUtils.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*
88
*/
99
public class PrintUtils {
10+
//TODO 仅仅适合基础类型 如果是特殊类型例如 list包裹的等则打印不出来
1011
private static boolean printLog=true;
1112
public enum PrintProperty {
1213
NO_TYPE, WITH_TYPE
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package Java.Zone.Utils;
2+
3+
import java.lang.reflect.Field;
4+
import java.lang.reflect.ParameterizedType;
5+
import java.lang.reflect.Type;
6+
import Java.Zone.Log.PrintUtils;
7+
8+
public class FieldTypeUtils {
9+
10+
public static FieldType getFieldType(Field field) {
11+
FieldType fieldType=new FieldType();
12+
try {
13+
ParameterizedType type = (ParameterizedType) field.getGenericType();
14+
Type temp = type.getActualTypeArguments()[0];
15+
// System.out.println(field.getName() + " ___ParameterizedType___ \t "
16+
// + type.getActualTypeArguments()[0]);
17+
fieldType.fieldProperty=FieldProperty.LIST_CLASS;
18+
fieldType.classStr=temp.toString();
19+
if(String.class.toString().equals(temp.toString())){
20+
fieldType.fieldProperty=FieldProperty.LIST_STRING;
21+
}
22+
// ºÃʹ
23+
// Class<?> lin =
24+
// Class.forName(type.getActualTypeArguments()[0].toString());
25+
// Parent a = (Parent) lin.newInstance();
26+
} catch (Exception e) {
27+
Type type = field.getGenericType();
28+
fieldType.classStr=type.toString();
29+
fieldType.fieldProperty=FieldProperty.CLASS;
30+
// System.out.println(field.getName() + "\t " + type);
31+
if(String.class.toString().equals(type.toString())){
32+
fieldType.fieldProperty=FieldProperty.STRING;
33+
}
34+
}
35+
return fieldType;
36+
}
37+
38+
public static class FieldType {
39+
public String classStr;
40+
public FieldProperty fieldProperty;
41+
@Override
42+
public String toString() {
43+
PrintUtils.printAllField(this);
44+
return super.toString();
45+
}
46+
}
47+
public enum FieldProperty{
48+
STRING,CLASS,LIST_STRING,LIST_CLASS;
49+
}
50+
}

0 commit comments

Comments
 (0)