`
mickey_hou
  • 浏览: 245826 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JPA反射机制实现对象获取-2

JPA 
阅读更多
/**
     * 用于获取Insert的字段映射累加
     * @return String
     */
    public String returnInsertColumnsDefine()
    {
        StringBuilder sb = new StringBuilder();
       
        List<String> list = columnMap.get(this.getClass());
        int i = 0;
       
        for (String column : list)
        {
            if (isNull(column))
            {
                continue;
            }
           
            if (i++ != 0)
            {
                sb.append(',');
            }
           
            sb.append("#{").append(column).append('}');
        }
        return sb.toString();
    }
   
    /**
     * 用于获取Update Set的字段累加
     * @return String
     */
    public String returnUpdateSet()
    {
        StringBuilder sb = new StringBuilder();
       
        List<String> list = columnMap.get(this.getClass());
        int i = 0;
       
        for (String column : list)
        {
            if (isNull(column))
            {
                continue;
            }
           
            if (i++ != 0)
            {
                sb.append(',');
            }
            
            sb.append(column).append("=#{").append(column).append('}');
        }
       
        return sb.toString();
    }
   
    public Integer getId()
    {
        return 0;
    }
   
    /**
     * 打印类字段信息
     */
    @Override
    public String toString()
    {
        Field[] fields = this.getClass().getDeclaredFields();
        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (Field f : fields)
        {
            if (Modifier.isStatic(f.getModifiers()) || Modifier.isFinal(f.getModifiers()))
            {
                continue;
            }
              
            Object value = null;
           
            try
            {
                f.setAccessible(true);
                value = f.get(this);
            }
            catch (IllegalArgumentException e)
            {
                log.error(e);
            }
            catch (IllegalAccessException e)
            {
                log.error(e);
            }
           
            if (value != null)
            {
                sb.append(f.getName()).append('=').append(value).append(',');
            }
        }
       
        sb.append(']');
       
        return sb.toString();
    }
   
    /**
     * 列名判空处理
     *
     * @param String fieldname
     * @return boolean
     * @throws SecurityException  NoSuchFieldException  IllegalArgumentException
     * @since TBSC
     */
    private boolean isNull(String fieldname)
    {
        try
        {
            Field field = this.getClass().getDeclaredField(fieldname);
            return isNull(field);
        }
        catch (SecurityException e)
        {
            log.error(e);
        }
        catch (NoSuchFieldException e)
        {
            log.error(e);
        }
        catch (IllegalArgumentException e)
        {
            log.error(e);
        }
       
        return false;
    }
   
    /**
     * 列名判空处理
     *
     * @param Field field
     * @return boolean
     * @throws SecurityException  IllegalArgumentException  IllegalAccessException
     * @since TBSC
     */
    private boolean isNull(Field field)
    {
        try
        {
            field.setAccessible(true);
            return field.get(this) == null;
        }
        catch (SecurityException e)
        {
            log.error(e);
        }
        catch (IllegalArgumentException e)
        {
            log.error(e);
        }
        catch (IllegalAccessException e)
        {
            log.error(e);
        }
       
        return false;
    }
分享到:
评论

相关推荐

    仿照jpa/Hibernate通过反射导入Excel

    在本场景中,“仿照jpa/Hibernate通过反射导入Excel”指的是利用反射机制来实现类似JPA或Hibernate的数据导入功能,将Excel文件中的数据转换为Java对象并存储到数据库中。 首先,我们需要理解JPA和Hibernate。JPA是...

    11_JPA详解_JPA中的一对多延迟加载与关系维护.zip

    然而,需要注意的是,由于Java的反射机制和代理对象的限制,延迟加载在某些情况下可能无法工作,比如在没有JPA上下文的情况下直接访问实体的关联属性。 **关系维护** JPA提供了两种方式来维护一对多关系:`...

    利用反射实现的持久层工具类(学习)

    本文将深入探讨如何利用反射机制来实现一个简单的持久层工具类,以供学习和参考。 反射是Java提供的一种强大的动态类型特性,它允许我们在运行时检查类的信息,包括类名、属性、方法等,并能够动态地创建对象和调用...

    JPA 和 注释文档

    - 通过反射机制,可以获取类、字段、方法等上的注释。例如,`getDeclaredAnnotations()` 返回所有声明的注释,包括从父类继承的;`getAnnotations()` 返回可见的注释,不包括继承的;`getAnnotation(注释名.class)`...

    java反射深入剖析(推荐)

    Java反射是Java语言提供的一种强大的机制,它允许我们在运行时检查和操作类、接口、字段和方法等。本文将深入剖析Java反射的概念及其在实际开发中的应用。 首先,我们需要了解,反射的核心在于`java.lang.Class`类...

    常见面试题200道题目

    7. **反射机制**: - 描述反射的基本概念,如何通过Class类获取对象信息。 - 使用反射动态调用方法和设置/获取属性值。 - 讨论反射在设计模式(如工厂模式)和动态代理中的应用。 8. **JavaEE技术**: - 介绍...

    java面试题

    - 如何通过Class对象获取类的信息,如构造器、方法和字段。 - 动态代理(Dynamic Proxy)的应用,如AOP(面向切面编程)。 6. **设计模式**: - 单例模式、工厂模式、建造者模式、观察者模式等常见设计模式的...

    JAVA面试题大全

    5. **反射机制** - 获取类信息:Class类的用法,如forName()方法。 - 创建对象:newInstance()方法和Constructor的使用。 - 访问成员:获取和修改字段、方法,调用构造器和方法。 6. **JVM** - 类加载机制:...

    Java 最常见的 200+ 面试题:面试必备(附详解答案).zip

    - Class类:如何通过Class对象获取类信息。 - 动态代理:了解JDK动态代理和CGLIB动态代理。 6. **设计模式**: - 单例模式:饿汉式、懒汉式、双重检查锁定和静态内部类实现。 - 工厂模式:简单工厂、工厂方法和...

    JAVA面试题最全集.files.rar

    8. **反射机制**: - Class类:获取类信息,动态创建对象。 - 构造器、方法、字段的反射调用。 9. **设计模式**: - 常见的23种设计模式,如单例、工厂、观察者、装饰者模式等。 10. **JVM**: - 类加载机制:...

    求职宝典-- - --面试大全

    - Class类:知道如何通过Class对象获取类的信息,动态创建对象。 - 构造函数、方法和字段的反射调用:理解如何在运行时动态访问和修改类的成员。 7. **JVM** - 类加载机制:了解类加载器的工作原理,双亲委派...

    java 编程帮手

    - 反射API允许程序在运行时动态地获取类的信息并操作对象。 - 注解(Annotation)提供了一种元数据机制,用于在代码中添加额外的信息,如Spring框架中的@Component。 10. **Java教程** - "The Java Tutorial"是...

    java面试——深圳-OPPO-Java高级.zip

    - 反射机制:动态获取类信息,创建对象,调用方法,修改属性,以及反射在设计模式中的应用。 - 注解:元数据的使用,自定义注解,以及使用反射读取注解信息。 6. **设计模式**: - 常见设计模式:单例、工厂、...

    java面试题库

    - 反射的基本用法,如Class类,Constructor、Method、Field对象的获取与使用。 - 注解的定义、使用,以及运行时注解的处理。 8. **网络编程** - TCP与UDP的区别,Socket编程的基本步骤。 - HTTP协议的基本概念...

    java面试相关题目

    7. **反射机制** - 反射的应用:动态获取类信息,创建对象,调用私有方法等。 - Class类:如何通过Class对象进行类的操作。 8. **设计模式** - 常见设计模式:单例模式、工厂模式、装饰器模式、观察者模式等。 ...

    java自学笔记

    - **反射**:理解反射机制,如何在运行时动态获取类信息并进行操作。 - **注解(Annotation)**:了解注解的基本用法,以及如何自定义注解。 4. Java API深入 - **IO/NIO**:深入学习Java的I/O系统,包括NIO(非...

    2023最新 Java面试:1-100期Java面试题及答案整理合集

    4. **反射机制** - 如何通过反射获取类信息,创建对象,调用方法。 - 反射在动态代理、配置文件加载等场景的应用。 5. **泛型** - 泛型的基本使用,通配符,类型擦除等概念。 - 泛型在集合和自定义类中的应用。...

    自用;自用;自用;自用;自用;自用;自用;自用;自用;自用;自用;

    - 在运行时获取类的信息,创建和调用对象的方法。 - 动态代理,实现运行时接口的动态实现。 11. **Java虚拟机(JVM)**: - JVM是Java程序的运行环境,负责解释执行字节码。 - 垃圾回收机制,自动管理内存。 -...

    java各公司面试试题

    - 反射机制的应用,如动态创建对象、调用方法、访问私有属性。 - 注解(Annotation)的使用,如自定义注解、元注解、运行时注解的获取。 7. **设计模式**: - 常见的设计模式,如单例、工厂、观察者、装饰器、...

Global site tag (gtag.js) - Google Analytics