JAVA反射 获取JavaBean属性 反射生成HQL语句

2025-05-15 20:45:44

1、新建一个Person实体类

JAVA反射 获取JavaBean属性 反射生成HQL语句

2、Shift+Alt+s+r生成get,set方法

JAVA反射 获取JavaBean属性 反射生成HQL语句

3、新建一个反射获取属性的方法public <T> void getDomainValue(T entity) {

JAVA反射 获取JavaBean属性 反射生成HQL语句

4、新建方法测试testGetValue反射打印的Person属性

JAVA反射 获取JavaBean属性 反射生成HQL语句

5、修改getDomainValue方法,使其生成HQL语法这里以查询为例StringBuffer buffer = new StringBuffer("select * from "); buffer.append(entity.getClass().getSimpleName()); buffer.append(" 1=1 ");

JAVA反射 获取JavaBean属性 反射生成HQL语句

6、运行testGetValue方法,查看打印情况打印结果select * from Person 1=1 and id = 'c96c077a5f0e4b638ed94b52dfb871d7' and name = '张三' and age = 18 and isDelete = false

JAVA反射 获取JavaBean属性 反射生成HQL语句

7、反射关键代码public <T> void getDomainValue(T entity) { StringBuffer buffer = new StringBuffer("select * from "); buffer.append(entity.getClass().getSimpleName()); buffer.append(" 1=1 "); Field[] fields = entity.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String name = field.getName(); String fristUpperCase = name.substring(0, 1).toUpperCase() + name.substring(1); Method method; Object value = null; try { method = entity.getClass().getMethod("get" + fristUpperCase); value = method.invoke(entity); if(null != value) { buffer.append(" and "); buffer.append(name); buffer.append(" = "); if(field.getType() == String.class) { buffer.append("'"); buffer.append(value); buffer.append("'"); }else { buffer.append(value); } } } catch (Exception e) { e.printStackTrace(); } } System.out.println(buffer.toString()); }

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:23
  • 阅读量:33
  • 阅读量:38
  • 阅读量:56
  • 阅读量:24
  • 猜你喜欢