【实习日记】第九天

       今天是实习的第九天,在昨天我们完成了分类和标签的增删改查,今天的任务主要是实现对新闻的添加、修改、搜索等功能。

       对新闻的添加和修改与昨天有些类似,同样是将新建和修改写在一起,当id为-1时即新建一条新闻,否则对新闻进行修改,但对新闻的添加和修改要复杂不少,不仅需要将news添加到model中,还必须将新闻的tags和所有的types添加到model中,否则在对新闻进行修改的时候则无法看到改新闻所属的tag和所有的type,无法完成修改。

      与昨天相比,更加有难度的地方是搜索功能,搜索功能提供了按照title,type和是否recommend进行搜索,需要自己设定搜索条件,所以需要新建一个NewsQuery类,在其中定义了title、typeId和recommend,然后重写Specification的toPredicate进行多条件查询,将title、type和recommend作为条件拼接起来进行查询,就能对新闻进行精确的查询。

      值得一提的是,在编码过程中,我遇到了不少问题,如在NewsServiceImpl类中,如果是新增新闻,就将创建时间设为当前时间,如果是更新新闻,就将更新时间更改为当前时间,但对新闻进行更新后,发现创建时间为空,因为函数传过来的news本身就没有创建时间,所以需要先将该news取出,使用BeanUtils的工具方法copyProperties将传过来的news中的内容copy到取出的news中,在这里用到了BeanUtils,其提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。如果有两个具有很多相同属性的JavaBean,就可以试用该方法将sourse中的属性copy到target中,如果sourse和target间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,需要程序员手动处理。但是在使用中发现属性为null也会被复制,需要使用工具类MyBeanUtils即可解决该问题。

    通过今天的学习,我对springboot愈加熟练,随着项目难度的增加,遇到的困难会越来越多,继续加油!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值