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

2025-10-30 06:21:03

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。
相关推荐
  • 阅读量:115
  • 阅读量:194
  • 阅读量:192
  • 阅读量:51
  • 阅读量:117
  • 猜你喜欢