update
This commit is contained in:
@@ -2,16 +2,29 @@ package com.yutou.databases;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.alibaba.fastjson2.JSONWriter;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
public class AbsDatabasesBean {
|
||||
String tableName;
|
||||
|
||||
private AbsDatabasesBean() {
|
||||
}
|
||||
|
||||
public AbsDatabasesBean(String tableName) {
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public JSONObject toJson() {
|
||||
JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(this, JSONWriter.Feature.WriteMapNullValue));
|
||||
json.remove("tableName");
|
||||
json.put("id","0");
|
||||
System.out.println("创建"+tableName+"表 json:"+json);
|
||||
return json;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.yutou.databases;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import com.yutou.inter.ISqlDatabaseBean;
|
||||
import com.yutou.utils.Log;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
@@ -13,6 +14,7 @@ import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class SQLiteManager {
|
||||
protected Connection conn;
|
||||
@@ -20,27 +22,38 @@ public abstract class SQLiteManager {
|
||||
private File sql;
|
||||
@Getter
|
||||
public BuildSql build;
|
||||
|
||||
public abstract String getFileName();
|
||||
public void init() {
|
||||
AbsDatabasesBean data = getDataBean();
|
||||
List<BuildSqlItem> items = new ArrayList<>();
|
||||
Field[] fields = data.getClass().getDeclaredFields();
|
||||
for (Field field : fields) {
|
||||
String name = field.getAnnotation(JSONField.class).name();
|
||||
if (name.equals("tableName")) continue;
|
||||
String type = BuildSqlItem.TYPE_STRING;
|
||||
if (field.getType() == int.class) {
|
||||
type = BuildSqlItem.TYPE_INT;
|
||||
} else if (field.getType() == String.class) {
|
||||
type = BuildSqlItem.TYPE_STRING;
|
||||
} else if (field.getType() == Date.class) {
|
||||
type = BuildSqlItem.TYPE_TIME;
|
||||
List<AbsDatabasesBean> data = getDataBean();
|
||||
List<BuildSqlItem> items;
|
||||
List<BuildSqlTable> tables = new ArrayList<>();
|
||||
for (AbsDatabasesBean bean : data) {
|
||||
Field[] fields = bean.getClass().getDeclaredFields();
|
||||
items=new ArrayList<>();
|
||||
for (Field field : fields) {
|
||||
String name = field.getAnnotation(JSONField.class).name();
|
||||
System.out.println(bean.getTableName()+" "+name);
|
||||
if (name.equals("tableName")) continue;
|
||||
String type = BuildSqlItem.TYPE_STRING;
|
||||
if (field.getType() == int.class) {
|
||||
type = BuildSqlItem.TYPE_INT;
|
||||
} else if (field.getType() == String.class) {
|
||||
type = BuildSqlItem.TYPE_STRING;
|
||||
} else if (field.getType() == Date.class) {
|
||||
type = BuildSqlItem.TYPE_TIME;
|
||||
}else if( field.getType() == boolean.class){
|
||||
type = BuildSqlItem.TYPE_BOOLEAN;
|
||||
}else if(field.getType() == ISqlDatabaseBean.class){
|
||||
type=BuildSqlItem.TYPE_TEXT;
|
||||
}
|
||||
items.add(BuildSqlItem.create().setName(name).setType(type).setNull(!"id".equals(name)).setKey("id".equals(name)));
|
||||
}
|
||||
items.add(BuildSqlItem.create().setName(name).setType(type).setNull(true).setKey(false));
|
||||
tables.add(BuildSqlTable.create().setName(bean.getTableName()).setItem(items));
|
||||
}
|
||||
|
||||
BuildSql sql = BuildSql.create()
|
||||
.setFileName("bilibili_login.db")
|
||||
.setTable(BuildSqlTable.create().setName(data.getTableName()).setItem(items));
|
||||
.setFileName(getFileName())
|
||||
.setTable(tables);
|
||||
build(sql);
|
||||
}
|
||||
|
||||
@@ -85,9 +98,14 @@ public abstract class SQLiteManager {
|
||||
sb.append("INSERT INTO `").append(t.getTableName()).append("` ");
|
||||
sb.append("(");
|
||||
value.append("(");
|
||||
for (String key : t.toJson().keySet()) {
|
||||
JSONObject json=t.toJson();
|
||||
Set<String> keySet = json.keySet();
|
||||
for (String key : keySet) {
|
||||
if("id".equals(key)) {
|
||||
continue;
|
||||
}
|
||||
sb.append("`").append(key).append("`,");
|
||||
value.append("'").append(t.toJson().get(key)).append("',");
|
||||
value.append("'").append(json.get(key)).append("',");
|
||||
}
|
||||
sb.deleteCharAt(sb.length() - 1);
|
||||
value.deleteCharAt(value.length() - 1);
|
||||
@@ -207,7 +225,7 @@ public abstract class SQLiteManager {
|
||||
}
|
||||
|
||||
|
||||
protected abstract AbsDatabasesBean getDataBean();
|
||||
protected abstract List<AbsDatabasesBean> getDataBean();
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -265,9 +283,11 @@ public abstract class SQLiteManager {
|
||||
|
||||
@Data
|
||||
public static class BuildSqlItem {
|
||||
public static final String TYPE_INT = "init";
|
||||
public static final String TYPE_INT = "int";
|
||||
public static final String TYPE_STRING = "String";
|
||||
public static final String TYPE_TIME = "TIME";
|
||||
public static final String TYPE_BOOLEAN = "boolean";
|
||||
public static final String TYPE_TEXT = "TEXT";
|
||||
|
||||
|
||||
String name;
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.yutou.inter;
|
||||
|
||||
public interface ISqlDatabaseBean {
|
||||
String getJson();
|
||||
}
|
||||
Reference in New Issue
Block a user