zoukankan      html  css  js  c++  java
  • BeanUtils的介绍使用

      BeanUtils工具

    在实际的开发中我们经常需要将用户的录入的数据进行封装为对象,那么如果使用反射和内省技术就会变得吃力。因此本节主要给大家讲解一个开源的操作JavaBean的一个工具即BeanUtils。

    下载:

    http://www.apache.org

    beanutils-1.8.0.zip

    commons-logging.jar

    包的引入:

    在项目中创建一个文件夹如libs,然后将整个项目需要的第三方的jar包可以直接拷贝带该目录,随后打开该目录全选à右键àBuild path à add path -> 看到奶瓶子即可

    举例1:使用BeanUtils工具封装用户提交的数据。

     1 public static void main(String[] args)throws Exception {
     2        // 模拟用户的输入的数据如下
     3        String name = "XML基础";
     4        String author = "某人";
     5        String price = "99.99";
     6        String date = "2013-01-04";
     7        Book book = new Book();
     8        // 任务是将以上的属性设置给指定的Book对象
     9        BeanUtils.setProperty(book, "name", name);
    10        BeanUtils.setProperty(book, "author", author);
    11        BeanUtils.setProperty(book, "price",price );
    12        // 查看属性是否封装好
    13        System.out.println(book);
    14 }

    发现使用上面的代码可以省略基本数据类型的转型的问题。进而提高代码的开发效率。

    举例2:自定义一个类型转换器类。

     1 public static void main(String[] args)throws Exception {
     2        // 模拟用户的输入的数据如下
     3        String name = "XML基础";
     4        String author = "某人";
     5        String price = "99.99";
     6        String date = "2013-01-04";
     7        
     8        Book book = new Book();
     9        
    10        // 注册一个自己的转换器
    11        /**
    12         * converter指定具体的转换器
    13         * clazz遇到什么类型调用上面的转换器
    14         */
    15        ConvertUtils.register(
    16                new Converter(){
    17                 // 回调方法   
    18                 @Override
    19                 public Object convert(Class type, Object value) {
    20                     if(value == null){
    21                         return null;
    22                     }
    23                     // 转换为String
    24                     String data = (String)value;
    25                     // 将指定格式的字符串转换为Date
    26                     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    27                     Date date  = null;
    28                     try {
    29                         date = format.parse(data);
    30                         return date;
    31                     } catch (ParseException e) {
    32                         e.printStackTrace();
    33                         return null;
    34                     }
    35                 }
    36                }, 
    37                Date.class);
    38        // 任务是将以上的属性设置给指定的Book对象
    39        BeanUtils.setProperty(book, "name", name);
    40        BeanUtils.setProperty(book, "author", author);
    41        BeanUtils.setProperty(book, "price",price );
    42        BeanUtils.setProperty(book, "date",date );
    43        // 查看属性是否封装好
    44        System.out.println(book);
    45 }

    如果每次遇到一个复杂类型都需要自定义转换器,那样的话实在麻烦。大家看在开发的时候可以先查看该接口是否提供了有效的实现类。

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

    其实真正的封装好的数据需要存储在数据库中,那么javabean的数据类型应该和数据库的数据类型保持一致,那么在声明持久化javabean的时候需要全部为数据库的基本数据类型。

    因此大家在JavaBean中需要导入的是java.sql.Date类,这样就直接可以将日期自动转换了。

    举例3:实现封装好的JavaBean对象的属性拷贝。

    1 // 实现属性封装数据的一个拷贝
    2 Book copy = new Book();
    3 System.out.println(copy);
    4 PropertyUtils.copyProperties(copy, book);
    5 System.out.println(copy);

    思考:如果使用BeanUtils封装用户的数据,那么也就是一个一个设置啊?岂不是也很麻烦?

    其实在真是的环境中我们可以直接获取用户提交的所有的数据信息,只需要进行遍历即可,但是为了方便快速的设置,那么可以将javabean中的属性名和用户提交的数据名保持一致。

  • 相关阅读:
    list中的对象或者map中的版本号排序 version排序
    spring boot jpa 复杂查询 动态查询 连接and和or 模糊查询 分页查询
    java 8 list的stream操作 list中的对象中的某一个成员取出转为该成员的list,以及对象过滤,筛选某个属性后的成员
    map或者对象转换
    Feign代理必须加value否则启动失败
    Eclipse中.setting目录下文件介绍
    远程仓库版本回退方法
    SpringMVC异常处理机制
    android studio启动和项目编译问题
    CentOS6.5安装php7+nginx+mysql实现安装WordPress
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3745417.html
Copyright © 2011-2022 走看看