利用反射搭建orm框架
2024-08-30 08:34:35
1思路 根据java反射获取属性上的 注解的value的值 然后拼接成sql去执行 这就是完成了一个orm实体关系映射
package src.Test.Reflect;
import java.lang.reflect.Field; @Table("table_teacher")
class teacher{
@Propety(name = "student_id")//必须和数据库里的列表对应一样
private String studentId;
@Propety(name = "student_name")
private String studentName;
@Propety(name = "student_age")
private String studentAge;
} public class ORM_Demo {
//思路 根据java反射获取属性上的 注解的value的值 然后拼接成sql去执行 这就是完成了一个orm实体关系映射
public static void main(String[] args) throws ClassNotFoundException {
Class<?> want= Class.forName("src.Test.Reflect.teacher");
Field[] field=want.getDeclaredFields();//获得所有的属性以及其修饰符 eg: private java.lang.String com.itmayiedu.Student.studentId
//根据注解获得其属性字段的name 这个必须和数据库的列保持一致
StringBuffer sf = new StringBuffer();
sf.append(" select ");
for(int i=0;i<field.length;i++){
Field foo=field[i];//获得单个属性
Propety p = foo.getDeclaredAnnotation(Propety.class);
sf.append(p.name());
//sf.append(field);
if (i < field.length - 1) {
sf.append(" , ");
}
}
Table declaredAnnotation = want.getDeclaredAnnotation(Table.class);
sf.append(" from " + declaredAnnotation.value());
System.out.println("生成的sql语句是"+sf.toString());
}
}
2这上面有我自定义的注解Table和Propety.这部分代码我就不贴出来了 嘿嘿 可以私聊我 qq邮箱在下
最新文章
- Socket聊天程序——客户端
- Linux下的压缩和解压缩命令——tar
- Mac系统下Android生成keystore
- Effective C++ 33 避免遮掩继承而来的名称
- JavaScript模块化
- 关于ssh调用远程后台命令挂住的解释
- [转]SQLServer SQL执行效率和性能测试方法总结
- 【c++】标准模板库STL入门简介与常见用法
- AIX 命令大全
- js 实现复制粘贴文本过滤(保留文字和图片)
- Chrome插件i18n多语言实现
- android的签名
- 转载:lua中switch
- matplotlib 无法显示中文和负号的解决办法
- [HTML/CSS]下拉菜单
- object-fit 属性的用法介绍
- for 循环增强
- nginx反向代理转发后页面上的js css文件无法加载【原创】
- [数据]matplotlib总结
- Silverlight 查询DataGrid 中匹配项 ,后台改变选中行颜色
热门文章
- VUE-CLI3.0脚手架安装
- spring springMVC Struts2 区别
- maven打包报错问题解析
- stixel_world+Multi_stioxel_world+semantic_stixel_world知识拓展
- ZIP:GZIP
- 下拉选择框,PopupWindow的使用
- [小米OJ] 7. 第一个缺失正数
- [剑指offer] 10. 旋转数组的最小数字
- 多个module实体类集合打一个jar包并上传至远程库
- sqlserver 2008 无法使用特殊主体‘sa’,错误15405