This commit is contained in:
2024-09-28 14:26:59 +08:00
parent 9521e9d5c8
commit 91fe70c1b8
20 changed files with 399 additions and 61 deletions

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -0,0 +1,5 @@
package com.yutou.inter;
public interface ISqlDatabaseBean {
String getJson();
}