编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

在Java项目开发中你们的业务增删改查代码是如何写的呢?

wxchong 2024-09-08 10:48:16 开源技术 11 ℃ 0 评论

增删改查业务。

分享一下我平常在写业务代码增删改查时的一种写法。

·首先是来到Controller入口层,在这里面每个接口会去调用对应的service。针对于返回结果一般会有一个就是封装,比如像code、msg、data去封装对应的数据,也就是这种写法。

当然我这里是使用了一种全局封装的处理,也就是拿到返回结果去判断有没有被包裹,如果没被包裹就统一包一层。但在有些时候可能去对接第三方的时候,他们的要求去响应的时候不需要去包这层,或者他们是指定的别的响应格式,那么我这里就会采用去自定义注解去判断有没有注解。

如果加了注解,意思是不被包装就直接返回对应的原始数据,这是针对于返回结果的包装处理。

·然后是关于接口的相关的声明,比如像分类在这里,跟上分类,下面就是page、list,就一系列正常接口。可能有些小伙伴就喜欢在命名后面去加上,比如像pageCategory,这种其实加了没什么必要,显得接口很长,并且本来这里就是声明了比如是分类,其实后面加不加就无所谓了,不加看上去比较简单一点。service方法名是同理,简单一点就没必要去加了。

·然后是参数校验,一般会使用JSR303的参数校验,也就是注解式的参数校验。这种注解式的参数校验可能有时候不太够,这时候怎么办?比如这里有一个相关的类,会实现两个接口,一个是处理参数的接口,还有个是校验参数接口。

在下面有对应的方法,比如检查参数,有些时候是根据某一个指定的字段去进行关联字段的校验,还有时候可能有一字段需要给大家默认值,所以在这里做了一个单独处理数据的方法。在这里面额外的去处理数据。

这个逻辑我会加到哪里?我会加到对应的Controller的AOP里面去实现。比如判断有没有去实现对应的接口,然后去进行相关的检查参数或者处理参数字段,去加默认值等等之类的。

但在上面可能有些接口也可以去拿到对应的,比如像用户信息拿到用户ID、用户名以及包括分页参数,前台统一从请求层里面拿过来之后,再去自己从请求层里面获取到,然后设置到DTO里面去。

回到service里面,比如这里再去调用对应的分页的时候,我会使用mybatisplus的分页插件,在这里按理说也要去设置对应的,比如像到达某一页以及每页显示多少条,当然这里没写,没写也是做了全局的处理,会交到对应mapper的AOP里面。

在这里面会去判断是否属于分页的IPage值,如果是,在这里去设置对应的,比如到某页以及对应的就是每页展示多少条,这些都是从前端的请求头里面去统一获取的。

其次就是在写service代码的时候,最好将功能最小化,抽离一下功能,就不要在service里面去写一扒拉功能,就显得代码很臃肿,并且这样代码看上去也不太好懂,一旦把它抽离出来之后,每一个方法看上去就比较小,这种可读性也比较好。

还有一个是service、mapper的调用,比如这里是分类的SOS,只去调用分类的mapper就不要去调其他mapper。如果想要去调其他crud的功能,通过service去调,也就是封装统一入口,不然就东掉西掉。

比如mapper以后去查哪里用到的add,哪里用到删除,结果通过mapper去掉了,又通过service去掉了,到处都掉了,就无法知道具体到底有多少处去掉了。

ok 以上,便是一个简单的业务crud的说明。你学会了吗?

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表