BeanUtils使用案例

2024-06-14 18:58
文章标签 使用 案例 beanutils

本文主要是介绍BeanUtils使用案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 1.BeanUtils框架/工具(APACHE开源组织开发)
   (1)BeanUtils框架能够完成内省的一切功能,而且优化
   (2)BeanUtils框架能够对String<->基本类型自动转化(即八种基本类型的转换)
   (3)BeanUtils框架自定义转换器:
ConvertUtils.register( 转换规则 ,目标对象的Class)
   (4)向BeanUtils框架注册自定义转换器必须放在bu.setProperty()代码之前    
   (5)使用BeanUtils内置String->Date的转换器:

ConvertUtils.register(new DateLocaleConverter(),java.util.Date.class);

  (6)要使用的两个jar包:
commons-beanutils-1.8.0.jar和commons-logging.jar

     将这两个包复制到MyEclipse或者Eclipse中后,鼠标放在jar包上,右键选择“Build Path”-->"Add to Build Path"即可在代码中用这两个jar包了(并且这样代码中才有提示)

2.代码练习:


Student的代码(Student.java):


package cn.wwh.www.java.beanutils;


import java.util.Date;


/**
 *类的作用:特别注意:开始将birthday写出birthDay,而在beanutils中仍然用的是birthday,此时程序不能通过,
 *getBirthday和setBirthday中的D改过来后,才运行成功,这完全符合之前的说的,框架和setXxx和getXxx有关而与private Date birthay;中的birthDay无关
 *
 *
 *@author 一叶扁舟
 *@version 1.0
 *@创建时间: 2014-7-21   上午11:49:19
 */
public class Student {


private String name;
private int age;
private Date birthday;

public Student(){
System.out.println("构造函数");
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the birthDay
*/
public Date getBirthday() {
return birthday;
}
/**
* @param birthDay the birthDay to set
*/
public void setBirthday(Date birthday) {
this.birthday = birthday;
}

}

BeanUtils的测试代码(Demo1.java):


package cn.wwh.www.java.beanutils;


import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
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;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;


/**
 *类的作用:因为BeanUtil只能转换八种基本类型,如果转换其他类型,
 *则需要自己定义转换方式, 例如:想转换日期类型
 * 
 * 
 *@author 一叶扁舟
 *@version 1.0
 *@创建时间: 2014-7-21 上午11:49:07
 */
public class Demo {


// 自定一个类型转化器(将String---->Date格式化的输出)
@Test
public void testDemo1() throws Exception {
Student student = new Student();
BeanUtils bu = new BeanUtils();

//一定要先注册下
ConvertUtils.register(new Converter() {
@Override
public Object convert(Class calzz, Object type) {
/**
* 参数1:class,java.uitl.Date;(目标类型) 参数2:传入参数的类型,java.lang.string;
*/
String strBirthday = (String) type;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");


try {
return sdf.parse(strBirthday);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}, Date.class);


bu.setProperty(student, "name", "一叶扁舟");
bu.setProperty(student, "age", "22");
bu.setProperty(student, "birthday", "2014-07-22");


// 取出数据
String name = bu.getProperty(student, "name");
String age = bu.getProperty(student, "age");
String birthday = bu.getProperty(student, "birthday");


System.out.println("name:" + name + "\nage:" + age + "\nbirthday:"
+ new Date(birthday).toLocaleString());


/*
* 输出结果: 构造函数 
* name:一叶扁舟
*  age:22 
*  birthday:2014-7-22 14:00:00(我并没有修改时间,与里面源代码调用有关)
*/


}
@Test
public void testDemo2() throws Exception{
Student student = new Student();
BeanUtils bu = new BeanUtils();

ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class);



bu.setProperty(student, "name", "一叶扁舟");
bu.setProperty(student, "age", "22");
bu.setProperty(student, "birthday", "2014-07-22");


// 取出数据
String name = bu.getProperty(student, "name");
String age = bu.getProperty(student, "age");
String birthday = bu.getProperty(student, "birthday");


System.out.println("name:" + name + "\nage:" + age + "\nbirthday:"
+ new Date(birthday).toLocaleString());


}
}

   

代码测试效果图:




这篇关于BeanUtils使用案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1061242

相关文章

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

MySQL分区表的具体使用

《MySQL分区表的具体使用》MySQL分区表通过规则将数据分至不同物理存储,提升管理与查询效率,本文主要介绍了MySQL分区表的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、分区的类型1. Range partition(范围分区)2. List partition(列表分区)3. H

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中