首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

泛型简单工具类

利用泛型我们能做些什么?

前面简单的提到了泛型的使用,这节我们来看看泛型可以用来做些什么。

以下内容介绍都是我项目中遇到的,主要已 Hibernate 来做持久层,如果是经常使用 Mybatis 的小伙伴可能觉得我讲的东西完全没有遇到过,那可以当一个列子来看一下。

现在我们主流的设计架构都是 MVC 架构,在我们的系统中,进行过最多的就是对单表的增删改查,有时我们还要加上分页,按特定字段查询什么的。

久而久之,你会发现,自己好像在做很多重复的工作,很多代码在控制层写一遍,在服务层又写一遍,重点是每个方法都好像是差不多的。

例如一个新增的请求进来,新增一名学生,我要给这个实体插入 ID ,则写一句 ,下次新增一位老师,又写一遍这个设置 ID 操作,真的是太繁琐了。

我们来看一下列子,有两个类(对应数据库两张表),他们都有一个名字,ID 是唯一字段,那么在新增的时候,前端传过来只会带有一个名字,我们在进行持久化操作时,得给他们手动添加 ID (设置自增除外)。

不难看出,上述代码中,对于每一个新增的实体,我们都要进行重复的操作(设置ID),可能会出现更多的重复操作,具体看是否有相同的业务要求。

那么对于上述情况,我们有没有办法改变它,使每一个服务层,我只需要简单的一行代码就可以搞定了呢?

利用泛型。

我们先定义一个接口,只有简单的一个方法,设置 ID,实际上会有更多的重复操作

然后,我们再将 类 和 类实现这个接口(接口中的方法刚好是实体类中的 get 和 set 方法),这时候我们可以看到,我们只要操作 PoInterface 这个接口的 setID() 方法,就可以直接为两个实体类设置 ID 了,我们来看一下代码,写一个泛型工具类

有了这个工具类后,我们可以在每个 Service 层方法中调用,只要需要新增 ID 的,只需要一行代码就可以了

或许大家觉得这好像并没有减少多少开发量,你可以这么想一下,我一个方法中,不止是设置 ID ,还要分页,控制分页数据,对不同实体就会有不同的 DAO ,那么我们也可以将其封装成一个工具类,利用泛型限定传参来简化代码。

我们来看看

上述代码中,不止实体类用泛型就行传递,连 DAO 也利用里泛型传递,继承统一接口,统一实现了对 list,单个数据的操作即可,逻辑不需要很复杂,那么这样我在每一个 Service 层中,只要不需要用到很难的逻辑处理业务的,都可以直接调用泛型工具类进行操作

泛型可以让我们简化很多重复的操作,我贴出来的只是我发现的一小部分,更多的大家可以多多实践一下。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181225G07JJ500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券