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

 时间:2026-02-19 02:18:58

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());

    }

  • java反射获取方法
  • 什么是java反射机制
  • java反射教程
  • JAVA反射,JAVA之Class
  • 如何使用JAVA反射/JAVA反射实例
  • 热门搜索
    怎么治疗打呼噜 purple怎么读 心脏供血不足怎么办 诗歌怎么写 小学生怎么瘦腿 yy怎么创建频道 vlookup怎么用详细步骤 wifi电视怎么看电视台 眼睛肿了怎么办 怎么发邮件