package package2;
import com.sun.jdi.Value;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
public class DatabaseUtil {
public static String createTableSQL(Class<?> clazz) {
StringBuilder sb = new StringBuilder();
sb.append("CREATE TABLE ");
sb.append(clazz.getSimpleName());
sb.append(" (");
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
Column column = field.getAnnotation(Column.class);
if (column != null) {
sb.append(columnLabelToColumnName(column.label()));
sb.append(" ");
// 根据不同类型添加不同的SQL类型
sb.append(sqlTypeForField(field));
sb.append(",");
}
}
// 移除最后一个逗号
sb.deleteCharAt(sb.length() - 1);
sb.append(");");
return sb.toString();
}
private static String columnLabelToColumnName(String label) {
// 根据实际情况转换,例如将中文名转换为合法的数据库列名
if (label.equals("姓名")){
return"name";
}
if (label.equals("性别")){
return"sex";
}
if (label.equals("年龄")){
return"age";
}
if (label.equals("身份证号")){
return"idNo";
}
if (label.equals("是否已婚")){
return"isMerried";
}
return label;
}
private static String sqlTypeForField(Field field) {
// 根据字段类型生成相应的SQL类型
Type fieldType = field.getType();
if (fieldType.equals(String.class)) {
return "VARCHAR(255)";
} else if (fieldType.equals(Integer.class)) {
return "INT";
} else if (fieldType.equals(Boolean.class)) {
return "BOOLEAN";
} else {
// 默认或其他类型处理
return "VARCHAR(255)";
}
}
// 以下方法可以根据注解校验输入
public static boolean validateField(Field field, Value value) {
Column column = field.getAnnotation(Column.class);
int len1 = value.toString().length();
double len2 = value.toString().length();
if (column == null) return true;
// 添加校验逻辑
if(sqlTypeForField(field)=="VARCHAR(255)"){
if(column.maxLength()!= -1 || column.maxLength() >= len1){
if (column.minLength()!=-1 || column.minLength()<=len1){
return true;
}else return false;
}
}
if(sqlTypeForField(field)=="INT"){
if(column.maxValue()!= -1 || column.maxValue() >= len2){
if (column.minValue()!=-1 || column.minValue()<=len2){
return true;
}else return false;
}
}
return true;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
高级java第三次实验
共56个文件
class:21个
java:21个
xml:8个
需积分: 0 0 下载量 199 浏览量
2024-05-19
16:28:23
上传
评论
收藏 42KB ZIP 举报
温馨提示
注解处理器题目代码
资源推荐
资源详情
资源评论
收起资源包目录
homework3.zip (56个子文件)
homework3
package2
PersonAction.java 164B
Column.java 646B
Person2.java 1KB
Value.java 359B
DataUpdate.java 961B
PersonInput.java 880B
DataInsert.java 957B
MySqlDao.java 784B
DataDelete.java 984B
DatabaseUtil.java 3KB
PersonDisplay.java 807B
DataQuery.java 1KB
Test.java 566B
Label2.java 329B
TableCreator.java 661B
out
production
homework3
package2
Column.class 620B
Test.class 1KB
Person2.class 2KB
PersonInput.class 2KB
DatabaseUtil.class 3KB
DataQuery.class 2KB
MySqlDao.class 1KB
Label2.class 416B
DataUpdate.class 2KB
DataInsert.class 2KB
PersonAction.class 173B
DataDelete.class 1KB
Value.class 778B
TableCreator.class 1KB
PersonDisplay.class 2KB
.idea
.name 10B
uiDesigner.xml 9KB
workspace.xml 4KB
misc.xml 283B
modules.xml 277B
.gitignore 50B
homework3.iml 691B
package1
Test.class 1KB
PersonInput.class 3KB
Person.class 2KB
PersonAction.class 171B
Label.class 453B
PersonDisplay.class 2KB
.idea
.name 10B
uiDesigner.xml 9KB
workspace.xml 4KB
misc.xml 283B
modules.xml 277B
.gitignore 50B
homework3.iml 691B
package1
PersonAction.java 155B
PersonInput.java 2KB
Label.java 533B
PersonDisplay.java 1KB
Test.java 614B
Person.java 1KB
共 56 条
- 1
资源评论
a13s13
- 粉丝: 18
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功