如何更省事地用 Java 写一个命令行交互的 CRUD 应用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Oathbinder
V2EX    Java

如何更省事地用 Java 写一个命令行交互的 CRUD 应用

  •  
  •   Oathbinder 2018-10-07 09:40:57 +08:00 5038 次点击
    这是一个创建于 2562 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个 project 是一个 10 多张表的信息系统的 CRUD,纯命令行交互,直接上手写还是用 Spring Boot ?这个主要关系到用不用 JPA。另外命令行交互需要用 Spring Shell 吗? Java 写的不多求指导

    第 1 条附言    2018-10-07 14:12:01 +08:00
    不是我不想用其他语言,是只能用 Java
    25 条回复    2018-10-08 15:17:18 +08:00
    mrsatangel
        1
    mrsatangel  
       2018-10-07 09:53:55 +08:00 via iPhone
    jcommander+mybatis
    godoway
        2
    godoway  
       2018-10-07 10:10:57 +08:00 via Android
    同觉得 jcommander 就行,spring shell 好重
    另外比起 mybatis 这种用 jooq 会舒服一点
    lhx2008
        3
    lhx2008  
       2018-10-07 10:12:22 +08:00 via Android
    是的,boot,jpa 和 shell
    gowk
        4
    gowk  
       2018-10-07 10:17:57 +08:00 via Android
    其实吧,倒不如用 Go 省事,来的简单
    shakespaces
        5
    shakespaces  
       2018-10-07 10:19:22 +08:00 via Android
    @gowk 这就属于跑题了
    Oathbinder
        6
    Oathbinder  
    OP
       2018-10-07 10:22:07 +08:00
    @gowk 要求 Java+Oracle 所以就没办法了,如果不要求 Java 我就用.NET Core+SQL Server 了
    @godoway 实际上输入的也用不着去 parse,就是输入 1234 abcd enter your name 这种,所以是不是 jcommander 都用不着了
    gowk
        7
    gowk  
       2018-10-07 1:24:54 +08:00
    既然非要用 Java,那就用 Spring Boot + Spring JDBC Template 来做,简单实用
    godoway
        8
    godoway  
       2018-10-07 10:43:31 +08:00 via Android
    @Oathbinder jcommander 方便拿参数,毕竟参数顺序可变。
    Oathbinder
        9
    Oathbinder  
    OP
       2018-10-07 10:59:45 +08:00
    @godoway 我的意思是每次的输入要么是 1234 这种序号,要么是一个字符串,不会出现一次性输入多个字符串的情况
    passerbytiny
        10
    passerbytiny  
       2018-10-07 12:02:45 +08:00
    命令行交互 CRUD,这是在故意整人吗。这种事,老老实实交给 SQL 加脚本去做,用任何语言做,都是坑。
    godoway
        11
    godoway  
       2018-10-07 12:07:25 +08:00 via Android
    @Oathbinder 那可以不用呀,怎么省事怎么来
    Oathbinder
        12
    Oathbinder  
    OP
       2018-10-07 13:27:37 +08:00
    @passerbytiny 因为这就是个 CLI App 啊
    xuanbg
        13
    xuanbg  
       2018-10-07 13:40:30 +08:00
    直接登录数据库不就行了?要个毛线工具 APP
    OpenJerry
        14
    OpenJerry  
       2018-10-07 13:43:07 +08:00 via Android
    @xuanbg 因为不是每个人都会用数据库?
    Cbdy
        15
    Cbdy  
       2018-10-07 13:44:57 +08:00
    给用户装一个 DataGrip
    liyuanba
        16
    liyuanba  
       2018-10-07 13:47:33 +08:00
    cli app go 最合适
    glues
        17
    glues  
       2018-10-07 13:57:45 +08:00
    用 Java 写命令行,还想省事?
    Oathbinder
        18
    Oathbinder  
    OP
       2018-10-07 14:11:14 +08:00
    @glues 我知道 Java 的 CLI 神坑,我也没办法啊,这不是找个相对简单的办法
    qfdk
        19
    qfdk  
    PRO
       2018-10-07 14:45:55 +08:00 via iPhone
    jhipster 全是你的要求了
    qfdk
        20
    qfdk  
    PRO
       2018-10-07 14:50:01 +08:00 via iPhone
    顺便送个界面 不喜欢 ? 没关系 bash curl 反正有 swagger
    每个表四个 curl 的 link 那就直接 bash 调用就好了 别费脑子了
    TommyLemon
        21
    TommyLemon  
       2018-10-08 10:06:14 +08:00
    10 几张表,客户端还是命令行交互,看样子这需求挺简单的。
    直接 客户端命令行用 CURL + 服务端用 APIJSON (基于 SpringBoot,不用写接口和文档了,全自动化搞定)

    创作不易,GitHub 右上角点 Star 支持下吧,谢谢^_^
    https://github.com/TommyLemon/APIJSON
    y835L9DyC5XD09kq
        22
    y835L9DyC5XD09kq  
       2018-10-08 10:18:39 +08:00
    我用 Go 写过一个
    Oathbinder
        23
    Oathbinder  
    OP
       2018-10-08 10:25:04 +08:00
    @TommyLemon 这样的话交互就得拿 bash 做了,而且还要在 bash 里面处理 json,这个也不会比 Java CLI 省事吧
    TommyLemon
        24
    TommyLemon  
       2018-10-08 11:25:08 +08:00
    @Oathbinder
    可以用这个 Python 工具,支持直接在 CMD 里命令行发请求
    https://github.com/TommyLemon/APIJSON/tree/master/APIJSON-Python
    catinred
        25
    catinred  
       2018-10-08 15:17:18 +08:00
    @Oathbinder shell 处理 json 可以用 jq
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     924 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:40 PVG 06:40 LAX 15:40 JFK 18:40
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86