分享一下我写的WEB服务后端示例,欢迎大家讨论
java吧
全部回复
仅看楼主
level 6
azhch1 楼主
使用 Java17 和 SpringBoot 2.X 写的Rest WEB服务示例,参考了整洁架构。
地址: github.com/echcz/web-service
特性:
1. 全局异常处理,遇到错误/非预期行为,直接抛出异常即可
2. 声明式记录用户操作日志
3. 自动生成API文档
4. 快速实现CRUD,只需要定义好实体,继承一些抽象类即可快速实现CRUD服务
5. 权限支持,自动从JWT中提取用户信息放到用例上下文中供用例使用
6. 灵活且方便的查询定义方式,为复杂的业务提供支持(参考下面截图)
7. 类型安全的数据库查询
欢迎感兴趣有想法的兄弟姐妹提交PR。
如上,将查询定义在QO对象中,更符合高内聚性原则。
2023年11月04日 10点11分 1
level 7
插个眼[惊讶]
2023年11月04日 12点11分 2
level 9
插眼,下周学习一下
2023年11月04日 15点11分 3
level 9
[太开心][吐舌]
2023年11月04日 15点11分 4
level 6
vo dto do to dao pojo bo 现在新鲜 还看到了qo,有啥意思?要么就一个record,加一个vo就得了,搞那么多没用的,要我说就写jo,json对象,数据库存jsonb,省得你们一天到晚ooooooooooooo的,看着都累
2023年11月04日 16点11分 5
[笑眼][笑眼]
2023年11月04日 16点11分
他说的应该是查询对象,这东西有实际用处的。可以全局拦截一些字段的非法参数,比如有个查询用like,但可能会因为前台改参数得到了过高的数据级结果
2023年11月05日 00点11分
全是ooooooooooo
2023年11月05日 01点11分
还是有用的,对pojo做个标记,方便代码阅读
2023年11月05日 08点11分
level 1
现在似乎不流行用count来实现分页了。因为性能不行。。。
2023年11月04日 23点11分 6
那用什么?麻烦讲一下[小乖]
2023年11月05日 01点11分
@江火似流萤💤 会比较长,请看10楼
2023年11月05日 06点11分
是的,在数据量大的情况下会使用token分页,但这里有个悖论:如果使用token分页,那么用户就很难看到后面的数据,于是就减少对后面数据的查询,但token分页的目的就是提升查询后面数据的性能
2023年11月05日 08点11分
level 1
这种想法可能理想化了,实际会碰壁。比如你用了不可修改的排序,有的业务会按照sort或者置顶标记甚至多重排序需求。而且每次一次业务查询都得判断一轮既定的字段,要小心无数个极小的损耗带来的放大问题
2023年11月05日 00点11分 7
level 1
我笑死了,一个个都怕卷到自己,都劝退java,实际呢?还不是机械5k是东山再起,计算机20w尽显颓势。我小学毕业就出来打工四处碰壁,直到我碰见了余胜军,参加了java培训,毫不夸张,只要你好好学,出去两万是保底的事,都说java学的多,实际呢?也不过就spring,微服务,并发那些罢了,一个月学俩门,一个半月就能拿下,以后java必是蓝海专业,国家大力发展数字经济,所谓大佬也不过就是顺应局势罢了,当你们还在讨论今年java已死的时候,我已经拿到5个offer了,差距就是这样打开的。
2023年11月05日 01点11分 8
level 1
1. 假如一页显示20条,并且按照价格升序排序,那么首页加载查询排序如下
order by 价格 asc,id desc limit 20
2. 然后第二页就带上第一页最后一条数据的 id、price,并用 lastId、lastPrice 表示
第二页查询条件附上:where (price=lastPrice and id<lastId) and (price>lastPrice)
order by 价格 asc,id desc limit 20
这将能查出紧接第一页最后一条的后20条数据。
这样做的唯一缺点是不支持跳页,但是目前手机上网是主流,跳页需求几乎没有,大部分手机版应用都是滚动加载。滚动末尾加载。。。。
如果客户硬要做跳页功能,那么就做个假的跳页,无论数据多少都显示:[1] [2] [3] .... [100]
这样的跳页按钮,然后根据跳页按钮的值,设置 skipCount:
order by 价格 asc,id desc limit skipCount,20
到时候输出的时候有就显示,没有就显示没有。。。
2023年11月05日 02点11分 10
最后跳页不能太大,只允许100页以内,因为过大的跳页导致 skipCount 很大,也会导致性能问题
2023年11月05日 02点11分
@陈布川 查第二页的条件有问题吧,价格前面是等于又and了一个大于
2023年11月07日 00点11分
@陈布川 后面那个and要换成or才贴合语义
2023年11月07日 01点11分
@WThhhhh20 啊,确实错了。。。
2023年11月07日 03点11分
level 5
mark
2023年11月06日 03点11分 11
level 8
优秀,有时间学习一下
2023年11月06日 05点11分 12
level 10
提个建议,判断条件和是否加入sql最好简化,你这demo判断一个字段就要要三行
2023年11月06日 08点11分 13
level 3
插眼学习
2023年11月06日 11点11分 14
level 11
插眼,学习一下
2023年11月06日 15点11分 15
level 11
插眼 感谢lz[吐舌]
2023年11月07日 05点11分 16
1 2 尾页