java之手搓简单ORM框架--SQL的INSERT
1.手搓简单SQL增删改查框架-插入
1.1创建简单类,并使用泛型类,这里可能使用到之间写的三篇知识的内容,如果不了解的小伙伴可以去
当然,前提是必须要把数据库相关连接弄好,这里会专门出一篇 java之jdbc
现在直接手搓框架开始叭!
1.2准备工作:
1.2.1创建注解
后面会有用
这里演示:
@TableFiele
@Target(value = {ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface TableFiele {
String value();
}
@TableId
@Target(value = {ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface TableId {
String value() default "id";
}
@TableName
@Target(value = {ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface TableName {
String value();
}
目前只创建这三个,后面可能还会创建其他的注解
1.2.2 创建一个与你的数据库表一样的实体类
1.3现在创建一个dao文件:
及
public class CurrencyDao<T> {
}
并
创建一个userdao,这个只需要去继承上面的dao
public class UserDao extends CurrencyDao {
}
现在回到CurrencyDao里手搓框架:
//手搓简单框架
//通用的添加方法,针对所有的表都通用
public int insert(T t) throws Exception {
//以下所有都是针对sql语句 insert 拼接
StringBuffer insertInto = new StringBuffer("insert into ");
//获取实体类的反射类
Class<?> aClass = t.getClass();
//通过反射获取表名
String simpleName = aClass.getSimpleName();
//但是前提是,表名要与数据库名称一致,这里需要用到注解,预防类名与表名不一致的情况
//拿到注解
TableName annotation = aClass.getAnnotation(TableName.class);
//判断如果这个注解不等于null说明类名与表名确实不一样
if (annotation != null){
simpleName = annotation.value();
}
insertInto.append(simpleName);
//这里继续拼接所需的列名和属性值
ArrayList<String> key = new ArrayList<>(); //存放所有的列名
ArrayList<Object> valuess = new ArrayList<>();//存放所有的列值
//通过反射获取所有的属性对象
Field[] declaredFields = aClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
declaredField.setAccessible(true);
//获取属性名
String name = declaredField.getName();
//获取属性对象上的注解,预防属性类名与列名不一致的情况
TableFiele annotation1 = declaredField.getAnnotation(TableFiele.class);
//同理判断
if(annotation1 != null){
name = annotation1.value();
}
//每循环一次将列名放进keyList集合内
key.add(name);
Object v = declaredField.get(t);//获取对象t中指定的属性值
valuess.add("'"+v+"'");//每循环一次将列值放进valuessList集合内
}
//将list的[]替换成()
String keypalss = key.toString().replace("[", "(").replace("]", ")");
String valuepalss = valuess.toString().replace("[", "(").replace("]", ")");
//继续拼接
insertInto.append(keypalss + " values " + valuepalss);
System.out.println(insertInto);
// 调用jdbc数据库运行sql语句
Connection connection = DButils.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(insertInto.toString());
int i = preparedStatement.executeUpdate();
return i;
}
1.4随后进行测试:
这里创建一个测试类:
及
public class Test {
public static void main(String[] args) throws Exception {
UserTable userTable = new UserTable();
userTable.setUser("九极致之术");
userTable.setPass("123456");
userTable.setMoney(99.9);
UserDao userDao = new UserDao();
int insert = userDao.insert(userTable);
System.out.println(insert);
}
}
1.5 运行结果如下:
数据库:
以上便是ORM框架中的SQL语句添加,如有漏缺请在下方留言告知,我会及时补充