java框架BeanUtils练习

内省----->一个变态的反射
   BeanUtils主要解决 的问题: 把对象的属性数据封装 到对象中。  使从文件中读取的数据往对象中赋值更加简单;
 
  BeanUtils的好处:
  1. BeanUtils设置属性值的时候,如果属性是基本数据 类型,BeanUtils会自动帮我转换数据类型。
   2. BeanUtils设置属性值的时候底层也是依赖于get或者Set方法设置以及获取属性值的。
   3. BeanUtils设置属性值,如果设置的属性是其他的引用 类型数据,那么这时候必须要注册一个类型转换器。

代码练习:

Emp类:

package com.java.base;

import java.sql.Date;

public class Emp {

    private int id;

    private String name;

    private double salary;

    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Emp(int id, String name, double salary) {
        super();
        this.id = id;
        this.name = name;
        this.salary = salary;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public Emp(){}

    @Override
    public String toString() {
        return "编号: " + this.id + "姓名: " + this.name + "薪水: " + this.salary + "出生日期: " + this.birthday;
    }

}

BeanUtils代码:

package com.java.fram;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Constructor;

import com.java.base.Emp;
import com.java.base.Person;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;

/*
    内省----->一个变态的反射
      BeanUtils主要解决 的问题: 把对象的属性数据封装 到对象中。

     BeanUtils的好处:
     1. BeanUtils设置属性值的时候,如果属性是基本数据 类型,BeanUtils会自动帮我转换数据类型。
      2. BeanUtils设置属性值的时候底层也是依赖于get或者Set方法设置以及获取属性值的。
      3. BeanUtils设置属性值,如果设置的属性是其他的引用 类型数据,那么这时候必须要注册一个类型转换器。

 */

public class BeanUtilsExercise {

     public static void main(String[] args) throws Exception {
//         writeFile();
//         Person p = (Person)getInstance();
//         System.out.println(p);
         String id = "001";
         String name = "张三";
         String salary = "1000";
         String birthday = "2013-12-10";

         //注册一个类型转换器
         ConvertUtils.register(new Converter() {

            @Override
            public Object convert(Class type, Object value) {
                Date date = null;
                try{
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                date = (Date) dateFormat.parse((String)value);
                }catch(Exception e){
                    e.printStackTrace();
                }
                return date;
            }
        }, Date.class);

         Emp e = new Emp();
         BeanUtils.setProperty(e, "id", id);
         BeanUtils.setProperty(e, "name", name);
         BeanUtils.setProperty(e, "salary", salary);
         BeanUtils.setProperty(e, "birthday", birthday);

         System.out.println(e);
    }

     public static void writeFile() throws Exception{
         BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("obj.txt"));
         bufferedWriter.write("com.java.base.Person");
         bufferedWriter.newLine();
         bufferedWriter.write("id=1");
         bufferedWriter.newLine();
         bufferedWriter.write("name=王五");
         bufferedWriter.newLine();
         bufferedWriter.write("age=25");
         bufferedWriter.newLine();
         bufferedWriter.close();

     }
     public static Object getInstance() throws Exception{
         writeFile();
         BufferedReader bufferedReader = new BufferedReader(new FileReader("obj.txt"));
         String className = bufferedReader.readLine();
         Class clazz = Class.forName(className);
         Constructor constructor = clazz.getConstructor(null);//获取构造方法;
         Object person = constructor.newInstance(null);
         //通过构造方法获取一个实例
         String line = null;
         while((line = bufferedReader.readLine()) != null){
             String[] datas = line.split("=");
             Field field = clazz.getDeclaredField(datas[0]);
             if(field.getType() == int.class){
                 field.set(person, Integer.parseInt(datas[1]));
             }
             else{
                 field.set(person, datas[1]);
             }
         }
         return person;

     }

}
时间: 2024-10-12 11:27:36

java框架BeanUtils练习的相关文章

如何查看JDK以及JAVA框架的源码

如何查看JDK以及JAVA框架的源码 设置步骤如下: 1.点 “window”-> "Preferences" -> "Java" -> "Installed JRES" 2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE) 3.选中rt.jar文件的这一项:“c:\pr

JAVA框架整合(struct+spring+jpa)之utf8mb4

基于mysql数据库整合框架时出现的数据库字符编码的问题. 解决办法:数据库驱动的版本太高,换成低版本的,主要还是你的架包太不是最新版本,出现的兼容性问题. JAVA框架整合(struct+spring+jpa)之utf8mb4,布布扣,bubuko.com

最简单的Java框架

框架framework的目的是定义骨架式方案,处理各种相同的底层细节:而开发人员使用框架时,能够依照自己的需求实现自己的功能--仅仅须要填入自己的东西/flesh. 最简单的框架,类似于JUnit,它有一个main(String[] args)启动本框架.假设是applet或GUI框架,就有太多底层细节须要处理. package principle.callback.lower; /** * 最简单的Java框架 * * @author yqj2065 * @version 2014.10 */

Java框架服务

Java从诞生到现在,一路飙升,可以说红遍全球,红到发紫.随着Java的流行,促生了许多java框架:Spring.WebWork.Struts.HIbernate.JDiy.JFinal.Quartz.Welocity.IBATIS.Compiere ERP&CRM Spring Framework[Java开源J2EE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架.Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring

将网页另存为图片的Java框架

首先要了解的是java在图像这一块非常弱.用java实现截图倒不难,原理吗就是把当前屏幕存成一个图,然后获取鼠标拉去的想去位置然后把截取的图保存到panel里边,再生成图片即可.那么这里要说什么呢?好吧下面就说几个将网页保存为图片的框架: 1.html2image 网上炒这个还不少呢.我说这个就是原声的java代码进行封装的一个jar包.效果非常差,代码就不贴了网上好多. 2.cobra 如果你不知道这个的话,你应该听说过lobobrowser,纯java实现的浏览器,测试了下,除了启动慢的要死

如何在Eclipse中查看JDK以及Java框架的源码

对于Java程序员来说,有时候是需要查看JDK或者一些Java框架的源码来分析问题的,而默认情况下,你按住Ctrl,再点击 Java本身的类库(例如ArrayList)是无法查看源码的,那么如何在Eclipse中查看JDK以及Java框架的源码呢?下面,跟着我 一起,一步步带你走进源码的世界. 方法一:快速简单 第一步: 打开你的Eclipse,然后随便找一个Java文件,随便找一个Java类库,比如String什么的,然后按住Ctrl,再点击它,你会发现跳到如下界面: 你会发现报错了:Sour

Java框架介绍-13个不容错过的框架项目

本文转自互联网,个人收藏所用. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术.该项目允许大家创建REST服务.Web应用.任务.数据库迁移等等,且一切都立足于模块实现.另外,大家也可以将其作为简单的命令进行使用. 该项目的目标在于将应用从Java容器中解放出来,允许开发者重新回归main()方法.另外其中还包含部分内置命令,因此就算各位需要处理的代码量不多或者并未向应用中导入

java框架——经典的Hibernate

在编程开发中,我们有很多框架,他们有些很方便,也很实用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为"冬眠",这是个很有意思的技术,同样这个名字也很巧妙!大家先看看这个技术的书籍在国外的封面: 简介: 大家知道冬眠的动物是静止的,在冻僵的边缘,而Hibernate的一个巨大作用就是对数据持久化的实现,这两者有什么联系? 简单介绍数据持久化: 数据持久化是解决程序与数据库之间交互访问的问题,使程序不直接访问数据库,而是直接访问Session会话

对java框架的几点认识

java框架实在是太多了,网上一抄一大段,根本就了解不到什么.我还是以我的经验来说一下j2ee的框架.1.首先力推struts2框架,这是最经典的框架(可以说没有“之一”).可以帮你快速搭建出一个MVC模型出来.(注:struts1已经很少用了,且问题也很多,强烈推荐使用struts2).2.Spring框架,这是排行第二的框架(我个人排得,非权威),这个框架出彩的地方就在于它的“依赖注入”和“控制反转”.简单的说,就是在程序运行的时候才将参数注入到容器里.3.持久层框架选Hibernate和I