Java 对象属性的遍历

package com.cn.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.cn.mybatis.model.EdiTestTask;

public class mybatisTest {
    public static void main(String[] args) throws IOException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
        //mybatis的配置文件
        String conf="conf.xml";
        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is=mybatisTest.class.getClassLoader().getResourceAsStream(conf);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
        SqlSession session=sessionFactory.openSession();
        String statement="com.cn.mybatis.mapper.taskMapper.getAllTask";
        EdiTestTask editt=session.selectOne(statement,"6c61bffed61141d7a908af0428ae57fb");
        if(editt!=null){
            Field[] field = editt.getClass().getDeclaredFields();
            for (int i = 0; i < field.length; i++) {
                String name=field[i].getName();  //获得对象的属性名称
                String type=field[i].getGenericType().toString();
                System.out.println("属性的类型:"+type);
                name=name.substring(0,1).toUpperCase()+name.substring(1);  //构造get方法的名字
                Method m=editt.getClass().getMethod("get"+name);
                if(type.equals("int")||type.equals("class java.lang.Integer")){    //如果type是类类型,则前面包含"class ",后面跟类名
                    int val=(Integer)m.invoke(editt);
                    System.out.println(name+"的值:"+val);
                }
                if(type.equals("class java.lang.String")){
                    String val=(String)m.invoke(editt);
                    System.out.println(name+"的值:"+val);
                }

             if(type.equals("class java.lang.Short")){
                    Short value = (Short) m.invoke(editt);
                    if(value != null){
                        System.out.println("attribute value:"+value);
                     }
                }
                if(type.equals("class java.lang.Double")){
                    Double value = (Double) m.invoke(editt);
                    if(value != null){
                        System.out.println("attribute value:"+value);
                    }
                }
                if(type.equals("class java.lang.Boolean")){
                    Boolean value = (Boolean) m.invoke(editt);
                    if(value != null){
                        System.out.println("attribute value:"+value);
                    }
                }
                if(type.equals("class java.util.Date")){
                    Date value = (Date) m.invoke(editt);
                    if(value != null){
                        System.out.println("attribute value:"+value.toLocaleString());
                    }
                }               

            }
        }
    }

}
时间: 2024-10-27 10:55:54

Java 对象属性的遍历的相关文章

Stripes视图框架Java对象属性验证和prototype.js Ajax的测试

Stripes视图框架Java对象属性验证,它允许对字段设置是否必须填写,对数字大小进行限制等.我用prototype.js Ajax 将验证后的数据及时地展示出来,下面来看程序. 1.编写User实体类 此用户共三个属性: name.email.age. package com.boonya.stripes.entity;      public class User {              private String name;              private String

JavaScript 对象属性的遍历

ES6一共有5种方法可以遍历对象的属性. (1)for...in for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性). (2)Object.keys(obj) Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). (3)Object.getOwnPropertyNames(obj) Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).

高性能 javaScript 之遍历对象属性

在面向对象的开发工作中,经常会遇到检查对象属性和遍历对象属性的情况. JavaScript 不包含如 java.C 等语言的传统类继承模型,而是使用 prototype 原型模型. JavaScript 原型链继承中属性查找过程 当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止.到查找到达原型链的顶部 - 也就是 Object.prototype - 但是仍然没有找到指定的属性,就会返回 undefined. 使用 for in 循环可以遍历对象所有的属

java bean 对象属性复制框架BeanMapping-01-入门案例

项目简介 Bean-Mapping 用于 java 对象属性赋值. 项目中经常需要将一个对象的属性,赋值到另一个对象中. 常见的工具有很多,但都多少不够简洁,要么不够强大. 特性 支持对象属性的浅拷贝 变更日志 变更日志 快速开始 准备 JDK1.8 及其以上版本 Maven 3.X 及其以上版本 maven 项目依赖 <dependency> <groupId>com.github.houbb</groupId> <artifactId>bean-mapp

Object对象属性

属性分为自身的和继承的属性 获取自身的属性 Object.getOwnPrototypeNames(obj)//仅获取自身的所有属性(包括不可枚举的) 仅获取可枚举的 Object.keys(obj) 判断某属性是否是自身属性 Date.hasOwnProperty('length') // true Date.hasOwnProperty('toString') // false 对象属性的遍历 1.判断某属性是否是对象的属性 "length" in obj;//true 2.遍历对

Android Studio NDK 入门教程(5)--Java对象的传递与修改

概述 本文主要Java与C++之间的对象传递与取值.包括传递Java对象.返回Java对象.修改Java对象.以及性能对比. 通过JNIEnv完成数据转换 Java对象是存在于JVM虚拟机中的,而C++是脱离JVM而运行的,如果在C++中访问和使用Java中的对象,必然会使用JNIEnv这个桥梁.其实通过下面的代码很容易看出,这种访问方式和Java中的反射十分雷同. 这里定义一个简单Java对象用于下文测试: package com.example.wastrel.hellojni; /** *

使用XStream注解实现Java对象与XML互相转换的代码示例

本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等.虽然他们的功能非常强大,但在使用上还是有点不那么习惯.对于格式比较固定的XML文档,它的结构没有变化或是很少变化,这时将它转换成我们熟悉的Java对象来操作的话,会使工作变得更容易一些,而xstream正好可以满足这一点.    本文所用xstream的版本为:1.4.7 <dependency>

java对象和json对象之间互相转换

一个很好的关于java对象和json对象互转的例子: 1 package com.kenneth.test; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Iterator; 6 import java.util.List; 7 8 import net.sf.json.JSONArray; 9 import net.sf.json.JSONObject; 10 11 /** 1

js之oop &lt;二&gt; 对象属性

js中对象属性可以动态添加和删除.删除对象属性用delete关键字. function obj(){ } var oo = new obj(); oo.a = "a"; oo.b = "b"; oo.a; //输出a oo.b; //输出b delete oo.a; oo.a; //输出undefined 在js中对象的属性以键值对的方式来体现,且(在遍历时)无序.js中属性名(也就是key)可以用点来访问(或赋值),也可以用中括号key值来访问(或赋值)(用中括号