Java基础学习:BeanUtils工具类深度解析与实战

需积分: 0 0 下载量 150 浏览量 更新于2024-08-04 收藏 140KB DOCX 举报
"Java基础第二阶段的第18天作业主要涵盖了BeanUtils工具类的使用,包括了如何操作BeanUtils进行属性的设置和获取,以及通过Map对象设置属性的实践案例。作业涉及到创建不同类(如Cat、Phone、User)并实现对应的get/set方法,然后利用BeanUtils工具进行对象属性的赋值和读取。" BeanUtils工具类是Apache Commons库中的一个关键组件,它简化了Java Bean对象之间的属性复制过程,提供了方便的属性设置和获取功能。在Java开发中,当我们需要处理大量的Java Bean对象,并且需要在对象间传递或复制属性时,BeanUtils工具就显得尤为重要。 1. **BeanUtils工具的作用**: - 属性复制:BeanUtils可以将一个Java Bean对象的属性值复制到另一个对象,即使它们的属性名称相同但类型不同,BeanUtils会尝试进行类型转换。 - 简化设置和获取属性值:通过调用静态方法,我们可以避免编写大量getter和setter方法的调用,减少代码量。 - 自动处理空值:如果目标属性为空,BeanUtils在复制时不会抛出异常,而是忽略空值。 2. **使用BeanUtils工具包的操作步骤**: - 引入Apache Commons库:首先需要在项目中引入Apache Commons Lang库,通常通过Maven或Gradle添加依赖。 - 创建Java Bean对象:定义类,包含相应的属性和getter/setter方法。 - 调用BeanUtils方法:使用`BeanUtils.copyProperties()`方法进行属性复制,或者使用`BeanUtils.getProperty()`和`BeanUtils.setProperty()`进行属性的读取和设置。 3. **训练案例分析**: - 训练案例3展示了如何使用BeanUtils为Cat类的各个属性赋值,包括名称、年龄、颜色和性别。首先创建Cat对象,然后通过BeanUtils的setProperty()方法逐个设置属性。 - 训练案例4演示了获取Phone对象属性值的过程,首先创建Phone对象,设置属性后,使用getProperty()方法获取各个属性的值。 - 训练案例5进一步扩展,展示了如何通过Map对象设置User类的属性。Map的键与User类的属性名对应,然后使用`BeanUtils.populate()`方法将Map中的值映射到User对象上。 通过这些训练案例,学习者可以深入理解BeanUtils工具类的使用,提升Java开发中的对象属性操作效率。在实际开发中,BeanUtils经常用于服务层的业务逻辑处理,尤其是在数据持久化、对象模型转换等场景下。

修改完整版的sql存储(积分兑换脚本),改写出可执行的shell create procedure "rptdev"."sp_wjq_jf_value_dhfz_show"( in @data_date integer default cast("dateformat"("now"()-1,'yyyymmdd') as integer), in @is_run_flag1 integer default 1, in @is_run_flag2 integer default 10 ) on exception resume /****************************************************************** -- Purpose : 兑换积分分析报表 -- Auther: xxx -- Date : 20210923 *******************************************************************/ begin declare @stat_date varchar(8); --统计日期 declare @month_id integer; --统计月份 declare @month_first_date varchar(8); --统计月的第一天 declare @month_last_date varchar(8); --统计月的最后一天 declare @last_month_first_date varchar(8); --上月的第一天 declare @last_month_last_date varchar(8); --上月的最后一天 declare @last_month integer; --上月 declare @last_last_month integer; --上上月 declare @last_month_this_day varchar(8); --上月当天 declare @last_year_this_month integer; --上年当月 declare @this_year_first_month integer; --本年首月 declare @last_year_last_month integer; --上年尾月 set @stat_date = convert(varchar(8),@data_date); set @month_id = @data_date/100; set @month_first_date = "dateformat"(@data_date,'yyyymm01'); --统计月的第一天 set @month_last_date = "dateformat"("dateadd"("dd",-1,"dateformat"("dateadd"("mm",1,@data_date),'yyyymm01')),'yyyymmdd'); --统计月的最后一天 set @last_month_first_date = "dateformat"("dateadd"("mm",-1,@data_date),'yyyymm01'); --上月第一天 set @last_month_last_date = "dateformat"("dateadd"("dd",-1,"dateformat"("dateadd"("mm",1,@data_date),'yyyymm01')),'yyyymmdd'); set @last_month = cast("dateformat"("dateadd"("month",-1,@data_date),'yyyymm') as integer); --上月 set @last_last_month = cast("dateformat"("dateadd"("month",-2,@data_date),'yyyymm') as integer); --上上月 set @last_month_this_day = "dateformat"("dateadd"("mm",-1,convert(date,@data_date)),'yyyymmdd'); --上月当天 set @last_year_this_month = convert(integer,"dateformat"("dateadd"("yy",-1,@last_month_this_day),'yyyymm')); --上年当月 set @this_year_first_month

2023-06-07 上传