首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉钩
V2EX  ›  Java

如何消除编写重复的 CRUD 的工作?

  •  2
     
  •   Macolor21 · 69 天前 · 4696 次点击
    这是一个创建于 69 天前的主题,其中的信息可能已经有所发展或是发生改变。
    框架 Spring boot + Mybatis, 对多个表的 CRUD 的重复性工作太多了,有什么好的设计方法能够避免这种情况
    37 回复  |  直到 2018-10-22 11:27:26 +08:00
        1
    lhx2008   69 天前 via Android
    用生成器->性能损失->用 JPA
        2
    weizhen199   69 天前
    mybatis plus 了解下
        3
    wshcdr   69 天前
    脚手架啊
        4
    likuku   69 天前
    试试自己写生成代码的工具代码(用代码来生产代码,至少可以最大程度不影响他人已有的习惯)
        5
    wd   69 天前 via iPhone
    用 orm ?
        6
    x66   69 天前 via iPhone
    @lhx2008 JPA 比生成器生成出来的代码效率高??
        7
    version   69 天前
    模块化. rpc . 分业务用 redis 来储存 还是 mongodb 还是 mysql 这样进步也快呢.
    如果单纯 crud.高并发.多事物.改需求是一个大难题.只能重构
        8
    GTim   69 天前
    @lhx2008
    @wshcdr

    赞同
        9
    misaka19000   69 天前 via Android
    用 jpa
        10
    luozic   69 天前 via iPhone
    看场景,现代硬件就是用了 orm 也一般不是性能瓶颈。
        11
    TommyLemon   69 天前
    CRUD 确实无聊,用自动化 API 解决吧。

    APIJSON 自动将前端传的 JSON 参数转为 SQL 语句执行并返回结果,
    期间自动校验权限、结构、内容,自动防 SQL 注入。

    通过自动化 API,前端可以定制任何数据、任何结构!
    大部分 HTTP 请求后端再也不用写接口了,更不用写文档了!
    前端再也不用和后端沟通接口或文档问题了!再也不会被文档各种错误坑了!
    后端再也不用为了兼容旧接口写新版接口和文档了!再也不会被前端随时随地没完没了地烦了!

    在线解析
    自动生成文档,清晰可读永远最新
    自动生成请求代码,支持 Android 和 iOS
    自动生成 JavaBean 文件,一键下载
    自动管理与测试接口用例,一键共享
    自动校验与格式化 JSON,支持高亮和收展

    对于前端
    不用再向后端催接口、求文档
    数据和结构完全定制,要啥有啥
    看请求知结果,所求即所得
    可一次获取任何数据、任何结构
    能去除重复数据,节省流量提高速度

    对于后端
    提供通用接口,大部分 API 不用再写
    自动生成文档,不用再编写和维护
    自动校验权限、自动管理版本、自动防 SQL 注入
    开放 API 无需划分版本,始终保持兼容
    支持增删改查、模糊搜索、正则匹配、远程函数等

    后端接口和文档自动化,前端(客户端) 定制返回 JSON 的数据和结构!
    创作不易,GitHub 右上角点 Star 支持下吧,谢谢^_^
    github.com/TommyLemon/APIJSON
        12
    TommyLemon   69 天前
    @TommyLemon 提供了 SpringBoot 的 Demo 哦。
        13
    TommyLemon   69 天前
    @TommyLemon
    APIJSON 目前 后端有 Java, C#, Node.ts 实现,
    前端有 Android-Java, iOS-Swift, Web-JavaScript, Web-Vue.js 实现。

    后端接口和文档自动化,前端(客户端) 定制返回 JSON 的数据和结构!
    创作不易,GitHub 右上角点 Star 支持下吧,谢谢^_^
    https://github.com/TommyLemon/APIJSON
        14
    xcjx   69 天前 via Android
    对于多个表增删改查的无聊,没有什么根本的解决方法。如果有,那也只有这一种:好好干,升职了后,把这些烂活儿交给别人干。
        15
    JmmBite   69 天前 via iPhone
    意念编程。
        16
    AltairT   69 天前 via iPhone
    用 mybatis 生成器只能生成简单的语句,还是习惯自己写 sql,jpa 虽然也能写 sql,但是对于复杂的语句还是不习惯
        17
    zw1one   69 天前 via Android
    用工具根据表结构生成基本的 crud 啊,然后再按需求改改
        18
    bobuick   69 天前
    自己往死里设计,封装你那部分业务就不会那么无聊了。而且把它当作你实验,想想貌似也还不错。
    以下是今天看到的一个例子:
    1.本来的 CRUD, 例如一个 transfer service,把 Account1 余额转给 Account2
    本来的写法,过程式:减 A1,if 检查 balance 是不是为负了,负了抛异常结束,然后给 A2 加余额,结束。

    改成:
    A1 呢不再是个贫血模式,看作 DDD 的设计模式来玩,加个 debt 方法,然后 Account 类呢,加个 OverDraftPolice 接口,用策略模式,当前业务可能不允许透支,但万一可能扩展呢?哈哈,实现个不允许透支但 OverDraftPolice 的 Impl

    然后把 Account 类里组合包含这个 Police 接口,然后呢 transfer 就写成这样了:
    account1.debt(amount)
    account2.debt(amount)

    这里面把 Police 规则封装进去。


    类似这种玩法,要是平常写过程式较多呢,就换个风格玩。你说有啥实际好处没?多数情况下答案是:有个大几把好处,业务要是能随码农感觉变动就不叫业务了。

    不过好歹自己玩过了,不会那么无聊啊。
        19
    sgz   69 天前
    mybatis plus 了解一下
        20
    est   69 天前
    还是挺怀念 vb6 时代的。做 CRUD 报表直接拖控件。选择数据源绑定 sql 即可。
        21
    q397064399   69 天前
    @bobuick #18 DDD 只是个工具 不是银弹
        22
    Raisu   69 天前
    前后端分离?或者自己抽象。。。
        23
    BBCCBB   69 天前
    通用 mapper 做 curd 的工作,需要定制的单独写 sql
        24
    woscaizi   69 天前 via Android
    mybatis-plus 基本的 crud 默认都有,希望可以帮助你。
        25
    Gathaly   69 天前
    转开发方向,用得到 crud 的项目都是坑
        26
    janxin   69 天前
    @TommyLemon graphql 来一哈?
        27
    bobuick   69 天前
    @q397064399 我有说银蛋么。lz 说无聊,那么换个姿势可能是个办法
        28
    glfpes   68 天前 via Android
    有啥重复性工作么? dao 都是自动生成的。
        29
    shm7   68 天前 via iPhone
    其实你想想很多年前吹的很厉害的大数据系统很多也是增删改查而已。都是信息存储和检索。如果真能找到自动化的东西,就不需要程序员这种手工业者了。
        30
    jaycheung   68 天前
        31
    TommyLemon   68 天前
    @janxin
    APIJSON 远比 Facebook 的 GraphQL 强大易用,详细对比:
    https://juejin.im/post/5ae80edd51882567277433cf
        32
    TommyLemon   68 天前
    @shm7 APIJSON 就做到了「大部分」 的 CRUD 接口自动化哦
    github。com/TommyLemon/APIJSON
        33
    swim2sun   68 天前 via iPhone
    spring data jpa
        34
    janxin   68 天前
    @TommyLemon 你这个对比看了一下没什么意义啊,你没搞清楚 GraphQL 的使用场景
        35
    TommyLemon   68 天前
    @janxin 那你说下它的使用场景是什么,以及它有什么优势
        36
    gejun123456   67 天前 via iPhone
        37
    xiaoxinshiwo   49 天前
    tk.mybatis
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1542 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 00:08 · PVG 08:08 · LAX 16:08 · JFK 19:08
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1