java吧 关注:1,248,860贴子:12,729,981

分享一下我写的WEB服务后端示例,欢迎大家讨论

只看楼主收藏回复

使用 Java17 和 SpringBoot 2.X 写的Rest WEB服务示例,参考了整洁架构。
地址: github.com/echcz/web-service
特性:
1. 全局异常处理,遇到错误/非预期行为,直接抛出异常即可
2. 声明式记录用户操作日志
3. 自动生成API文档
4. 快速实现CRUD,只需要定义好实体,继承一些抽象类即可快速实现CRUD服务
5. 权限支持,自动从JWT中提取用户信息放到用例上下文中供用例使用
6. 灵活且方便的查询定义方式,为复杂的业务提供支持(参考下面截图)
7. 类型安全的数据库查询
欢迎感兴趣有想法的兄弟姐妹提交PR。

如上,将查询定义在QO对象中,更符合高内聚性原则。


IP属地:广东1楼2023-11-04 18:55回复
    插个眼


    IP属地:四川来自Android客户端2楼2023-11-04 20:57
    回复
      插眼,下周学习一下


      IP属地:河南来自Android客户端3楼2023-11-04 23:09
      回复


        IP属地:重庆来自Android客户端4楼2023-11-04 23:39
        回复
          vo dto do to dao pojo bo 现在新鲜 还看到了qo,有啥意思?要么就一个record,加一个vo就得了,搞那么多没用的,要我说就写jo,json对象,数据库存jsonb,省得你们一天到晚ooooooooooooo的,看着都累


          IP属地:广东来自iPhone客户端5楼2023-11-05 00:53
          收起回复
            现在似乎不流行用count来实现分页了。因为性能不行。。。


            IP属地:广东来自Android客户端6楼2023-11-05 07:32
            收起回复
              这种想法可能理想化了,实际会碰壁。比如你用了不可修改的排序,有的业务会按照sort或者置顶标记甚至多重排序需求。而且每次一次业务查询都得判断一轮既定的字段,要小心无数个极小的损耗带来的放大问题


              IP属地:江苏来自iPhone客户端7楼2023-11-05 08:39
              回复
                我笑死了,一个个都怕卷到自己,都劝退java,实际呢?还不是机械5k是东山再起,计算机20w尽显颓势。我小学毕业就出来打工四处碰壁,直到我碰见了余胜军,参加了java培训,毫不夸张,只要你好好学,出去两万是保底的事,都说java学的多,实际呢?也不过就spring,微服务,并发那些罢了,一个月学俩门,一个半月就能拿下,以后java必是蓝海专业,国家大力发展数字经济,所谓大佬也不过就是顺应局势罢了,当你们还在讨论今年java已死的时候,我已经拿到5个offer了,差距就是这样打开的。


                IP属地:江西来自Android客户端8楼2023-11-05 09:05
                回复
                  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
                  到时候输出的时候有就显示,没有就显示没有。。。


                  IP属地:广东10楼2023-11-05 10:45
                  收起回复
                    mark


                    IP属地:北京来自iPhone客户端11楼2023-11-06 11:27
                    回复
                      优秀,有时间学习一下


                      IP属地:上海来自Android客户端12楼2023-11-06 13:54
                      回复
                        提个建议,判断条件和是否加入sql最好简化,你这demo判断一个字段就要要三行


                        IP属地:黑龙江来自iPhone客户端13楼2023-11-06 16:24
                        收起回复
                          插眼学习


                          IP属地:陕西来自Android客户端14楼2023-11-06 19:31
                          回复
                            插眼,学习一下


                            IP属地:辽宁来自iPhone客户端15楼2023-11-06 23:46
                            回复
                              插眼 感谢lz


                              IP属地:广东来自iPhone客户端16楼2023-11-07 13:27
                              回复