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

能不能推荐一个 Spring Boot 脚手架

  •  
  •   YVAN7123 · 2 天前 · 5389 次点击

    麻烦推荐一个 springboot 脚手架项目

    具备下面这些功能

    • Spring Boot:项目核心框架。
    • Druid:数据库连接池。
    • MyBatis Plus:简化 ORM 操作。
    • Swagger:接口文档生成工具。
    • Redis:缓存支持。
    • Logback/Log4j:日志管理。
    • JWT/Spring Security:认证与授权。
    97 条回复    2025-01-10 11:29:07 +08:00
    listen2wind
        1
    listen2wind  
       2 天前
    ruoyi
    perbugwei
        2
    perbugwei  
       2 天前
    jeecg-boot
    leoSup
        3
    leoSup  
       2 天前
    ruoyi
    wxyrrcj
        4
    wxyrrcj  
       2 天前
    el-admin
    chuck1in
        5
    chuck1in  
       2 天前   ❤️ 5
    https://www.mjga.cc
    你要的这个网站都有。

    Ps:为啥一定要用 Mybatis 这个上古框架呢?
    chuck1in
        6
    chuck1in  
       2 天前
    好像回复不能贴图来着?
    ![deieng]( https://s2.loli.net/2025/01/08/igNujwK1nbADdJI.png)

    还有个自定义元数据的功能:
    ![Zlcb36yuVPMfk19]( https://s2.loli.net/2025/01/08/Zlcb36yuVPMfk19.png)
    Meld
        7
    Meld  
       2 天前
    @chuck1in #5

    现在用什么?
    chuck1in
        8
    chuck1in  
       2 天前   ❤️ 1
    @Meld 有挺多可以选。
    Java 或者 Jvm 这个领域的数据库操作层的库基本上是以下这三种模式:

    1. 基于字符串拼接的 mybatis 及其衍生品。
    2. 基于 QueryDSL 的以数据库为一等公民的 JOOQ 和 DOMA
    3. ORM 这个选择范围就多了,标准是 jpa ,还有很多其他的库如 jimmer ,ebean 可以选。

    新手推荐就直接 JOOQ 这种现代库直接一把梭,老手如果要解决复杂的业务关系映射,就选 ORM 。

    你看看那个网站上都有模板的,可以下下来体验一下。
    Meld
        9
    Meld  
       2 天前
    @chuck1in #8 JOOQ 经常出现在信息流了,看来我已经落后主流技术栈很多了,谢谢分享
    yh7gdiaYW
        10
    yh7gdiaYW  
       1 天前   ❤️ 2
    等等,Spring Boot 自己不就是 Spring 的脚手架吗?三年没写 Java ,现在已经进化到脚手架上搭脚手架了吗
    pangdundun996
        11
    pangdundun996  
       1 天前
    gowk
        12
    gowk  
       1 天前   ❤️ 2
    5202 年了,Java 还在用 XML 写 SQL……我感到恶臭无比
    chuck1in
        13
    chuck1in  
       1 天前
    @gowk 对,主要 java 在国内整个生态确实太落后了,很多开发人员拒绝接受生产力更高的技术。就跟很多都不愿意升 jdk 一样。java 生态其实有好的库,就是在国内一直流行不起来。mybatis 基本上全球范围内只有国内在用,现在连日韩都不太用了。
    YVAN7123
        14
    YVAN7123  
    OP
       1 天前
    @chuck1in #13 能跑起来就行,哈哈哈哈
    chuck1in
        15
    chuck1in  
       1 天前
    @yh7gdiaYW 是的,传统意义上的脚手架其实就是那个。主要 java 的样板代码特别多,单纯的代码拉下来有很多共通的代码还需要配一下,所以衍生出了帮你把样板代码配置好的脚手架比如:www.mjga.cc

    然后还有一种就是很多用户连代码都不想写,想拿来一套就可以运行的,带前端界面的管理系统——就是上面说的那些 ruoyi ,jeec 什么的;这些其实不算脚手架了,算是一种 demo ,但很多开发人员没有区分得很清楚。
    chuck1in
        16
    chuck1in  
       1 天前
    @YVAN7123 那就用那个网站里面的就行,下下来就可以跑起来,啥都配好了。
    不过这个是真正的脚手架,不附带一大堆业务功能的,不是那种后台管理网站。
    Meld
        17
    Meld  
       1 天前
    @gowk

    我这边即便是仍然使用 Mybatis 的项目,基本也是 Mybatis plus + join 了,很少出现手搓 xml 的情况,即便有,也是复杂的分析 SQL 拼接,这种 SQL 感觉别的框架 or 语言生态也没啥好的解决方案吧?
    spritecn
        18
    spritecn  
       1 天前
    你以前的项目,精简简精,改改包名,保留框架部分,就可以用了
    sheeta
        19
    sheeta  
       1 天前
    sagaxu
        20
    sagaxu  
       1 天前
    @gowk
    @chuck1in

    mybatis / mybatis plus 一股恶臭,但国内就是喜欢,整体上 Java 生态估计比中国以外的地方陈旧 10 年左右
    werls
        21
    werls  
       1 天前
    https://start.spring.io/ 满足你的需求
    captain55
        22
    captain55  
       1 天前   ❤️ 1
    MAGA:make java great again
    nanpu
        23
    nanpu  
       1 天前
    ruoyi-plus
    wukairobin
        24
    wukairobin  
       1 天前
    idea 新建项目勾一勾 都有了
    zepc007
        25
    zepc007  
       1 天前   ❤️ 1
    @gowk 相当恶臭, 甚至连 JPA 都排斥, 不知道什么脑回路
    kingwrcy
        26
    kingwrcy  
       1 天前
    那种几十行/上百行的 sql 还是 mybatis 给力,普通 crud jpa 确实够用.
    miaotaizi
        27
    miaotaizi  
       1 天前
    JOOQ 跟 mybatis plus 的区别在哪?

    能解决业务不就行了吗?
    chenzw2
        28
    chenzw2  
       1 天前   ❤️ 2
    @chuck1in 就生成一个简单脚手架还要注册和收费,浪费时间
    lmq2582609
        29
    lmq2582609  
       1 天前
    我写了一个,不过技术栈和你的有差别:
    https://github.com/lmq2582609/minimalist-saas
    memedahui
        30
    memedahui  
       1 天前   ❤️ 9
    @gowk 非常认真的问一下,复杂的多表连接查询,里面还有子查询,我除了使用 xml,还能用什么框架?
    chaos93
        31
    chaos93  
       1 天前
    @chuck1in #5 这个要钱
    chuck1in
        32
    chuck1in  
       1 天前
    @chaos93 不想给钱选默认配置就可以了,或者直接用 github 里面那个代码全开源的。
    chuck1in
        33
    chuck1in  
       1 天前
    @chenzw2 右上角不是那么大一个 github 的链接吗。。。。
    zhady009
        34
    zhady009  
       1 天前
    @sagaxu mybatis 真的难用 plus 一样换汤不换药,本质上都是拼接 sql 跑到 xml 上去拼灵活性还弱了,代码上用框架提供的操作拼接舒服多了。目前 jimmer 和 exposed 都不错,更上一层的封装就是 jpa 当然会牺牲一些东西看场景来选择
    gotonull
        35
    gotonull  
       1 天前
    为什么这么多人讨厌 mybatis ?
    chuck1in
        36
    chuck1in  
       1 天前
    @memedahui 要解决多表关系问题只能用 ORM ,这个是唯一解。
    chuck1in
        37
    chuck1in  
       1 天前
    @sagaxu mybatis 系列本身很早就该淘汰了的,以前是在东亚还有点市场,这两年在日韩也不太用了,基本上就国内在用。mybatis 及其各种衍生品简直了,都不知道说什么好。
    chuck1in
        38
    chuck1in  
       1 天前
    @miaotaizi 说实话你这个问题不好回复的,就跟 java 和 php 谁好一样。因为写 php 也能解决业务问题,选 java 没太大必要。
    chuck1in
        39
    chuck1in  
       1 天前
    @zepc007 这个问题我在别的社区跟其他人讨论过,有一种开发者的思路是这样的:mybatis 的 xml 如果出了问题,可以随便在线上任意改动,改了马上生效,比其他框架有优势。

    我也回了他们,说如果想随便改代码可以用动态语言,选 Java 带来的只有烦恼。

    其实没办法,这种产品上的问题,思想认知不在一个层次的话终归就是鸡同鸭讲。
    chuck1in
        40
    chuck1in  
       1 天前
    @zhady009 关键还有个很奇怪的点,就是既然觉得 mybatis 的 xml 不好用那就换一个框架用不就好了。在这个框架上再开发一个插件去完全改变这个插件的行为方式这种做法是真的有点不理解。
    chuck1in
        41
    chuck1in  
       1 天前
    @gotonull 可以去试试上面提到的 jooq 、jimmer 、jpa 、doma 、ebean 那些库以后就明白为什么了。
    iloveyou
        42
    iloveyou  
       1 天前   ❤️ 1
    mybatis 确实讨厌,不过 mybatis plus 就不错,算是个 orm 框架了。
    alexluo1
        43
    alexluo1  
       1 天前
    JHipster
    Aresxue
        44
    Aresxue  
       1 天前
    java 的 orm 是个月经贴了,但说实话现存的 orm 都不好用,在当前的 JVM 设计下也很难看到曙光,这才是 mybatis 还能苟延残喘的原因, 作为第四代编程语言的 sql 在数据处理这个领域语法的简洁性超过 java 这个三代语言太多了,甚至可以说 sql 语法的易用性、简洁性超出了绝大多数编程语言,在这个背景下用编程语言代替 sql 只会带来更多的工作量,而 orm 的优势(数据库适配性、可维护性)等等很难打动用户。
    zypy333
        45
    zypy333  
       1 天前
    上手快项目简单 ruoyi (带 plus 插件版)
    代码整洁加增强功能+多租户 ruoyi-vue-plus 喜欢自己动手改造的可以选这个,组件有点少
    带在线报表+组件丰富+不介意部分闭源 jeecg-boot 缺点是封装组件多学习曲线有点高,适合长期用
    重量依次递增
    sketcherly
        46
    sketcherly  
       1 天前   ❤️ 4
    diss mybatis 的可以理解,CRUD 重复写,为啥 mybatis plus 也一起中枪?甚至推荐还有人推荐 jpa ,我看了下 jpa 的查询也就是一些注解映射查表,复杂 sql 的方案还是写个注解 value=拼接 sql ,难道 ORM 的目的不是为了避免在 java 代码里拼接 sql 吗,在注解里拼接和在 java 代码里拼有啥区别,不一样看起来很难受吗。

    顺便问一句,真的有人会用 jpa 的约定,给 DAO 的方法命名 findByXxxxXxxxXxxxAndXxxxXxxxXxxxAndXxxxXxxxXxxxAndXxxxXxxxXxxx() 吗
    kilakilia007
        47
    kilakilia007  
       1 天前 via Android
    mybatis 就差在没提供 jpa 那种通过 findbyxxx 的简单 sql 自动生成,但复杂查询除了 mybatis 没见到有什么好的解法
    miaotaizi
        48
    miaotaizi  
       1 天前
    @chuck1in 对呀, 能用 PHP 的地方绝对不用 java

    就 ORM 这一个需求, 我觉得 PHP 的 ORM 吊打 java , 但是这又如何呢
    0xD800
        49
    0xD800  
       1 天前
    我用 mybatis-mapper ,wrapper 查询很爽,支持 typeHandler ,json 之类的数据,无感操作,无需手动转换。
    sa-token 也方便不少。
    不过这种自己写也非常方便
    arewei
        50
    arewei  
       1 天前
    介绍就介绍,扯一些有的没的干啥,碍眼得很...
    gowk
        51
    gowk  
       1 天前
    @memedahui #30 也没啥好办法,只能用 mybatis 捏着鼻子写了 😂
    loocao
        52
    loocao  
       1 天前   ❤️ 1
    Spring Security 换 sa-token 吧,以前我也是用 Spring Security 解决问题,还专门研究了一套适用的多账号配置,直到看到 sa-token 的文档。去 tmd Spring Security 。。。
    gowk
        53
    gowk  
       1 天前
    @memedahui #30 另外,现在真的可以放弃 Java 试试 Kotlin 写后端,Exposed, ktorm 都可以尝试一下
    cmlx1014
        54
    cmlx1014  
       1 天前
    @gowk 用啥比较优雅呢 请教下,感觉比 JPA 好用多了 😂
    cmlx1014
        55
    cmlx1014  
       1 天前   ❤️ 2
    @memedahui JPA 之类 一坨又一坨,看了都想吐。上面喷 mybatis 的都是没有真正的做企业级开发,没有遇到多表复杂查询的情况。
    cmlx1014
        56
    cmlx1014  
       1 天前
    @miaotaizi #48 简单网站 PHP ,企业级 互联网 必须 JAVA 。
    nutting
        57
    nutting  
       1 天前
    我发现 ORM 其实和关系型数据库天然矛盾,直接对象数据库才是根本
    k9990009
        58
    k9990009  
       1 天前 via Android
    RuoYi-Cloud-Plus
    用这个吧,集成了工作流,文档也比较齐全,除了 CICD 得自己写。作者也比较活跃,vip 群里有问必答。模块化做的也比较好,jeecg 依赖耦合太重了,工作流闭源的。
    sagaxu
        59
    sagaxu  
       1 天前
    @cmlx1014 “企业级开发” 和 “多表复杂查询” 是中国独有?只有 mybatis 擅长拼 SQL ?表达能力比 DSL 强还是比语言自身强?
    nananqujava
        60
    nananqujava  
       1 天前 via Android
    ruoyi-vue-pro ,自带一些常用业务,源码开源,数据库 sql 在星球里
    cvbnt
        61
    cvbnt  
       1 天前 via Android   ❤️ 1
    mybatis 能解决几十上百行的 sql ,就这一点就足够了
    xuanbg
        62
    xuanbg  
       1 天前
    @gowk Mybatis 也可以不把 SQL 写 XML 里面的。我就用 Mybatis ,连 plus 都不用。但我不写 XML ,XML 写不了一点。
    xuanbg
        63
    xuanbg  
       1 天前
    @gowk Mybatis 也可以不把 SQL 写 XML 里面的。我就用 Mybatis ,连 plus 都不用。但我不写 XML ,XML 写不了一点。
    @sagaxu
    feiyekong
        64
    feiyekong  
       1 天前 via iPhone
    ORM 可以试试 doma2 好像除了一对多 多对多的关系都还挺好使 就是编译费点时间
    iintothewind
        65
    iintothewind  
       1 天前
    毕业设计, 外包就用 ruoyi

    想好好做, 就自己架构,

    连选型都做不到,

    就别挑三拣四的了.
    songche
        66
    songche  
       1 天前 via Android
    @spritecn 我写了个脚本专门改包名类名文件名,执行一下就是个新项目哈哈哈
    tairan2006
        67
    tairan2006  
       1 天前
    语言写多了就会发现复杂查询还是直接写 sql 最简单,mybatis-plus 的抽象程度恰到好处。
    SoulSleep
        68
    SoulSleep  
       1 天前   ❤️ 1
    说 JOOQ 比 mybatis 先进的..........还有人搬出 JPA....竟然没人提 hibernate......😅
    类比一下,这相当于前几年各国产手机发布会必蹭领先苹果
    单说代码优雅问题,似乎好一些,更脚本语言一些,除此之外
    JOOQ 也只是相对小众,如果和 mybatis 一个普及率,你们说的所谓的 mybatis 恶臭的东西,都会附在 JOOQ 身上,本质上 issues 还是提的少了
    joetao123
        69
    joetao123  
       1 天前
    自荐一个: https://github.com/pipijoe/xryder-server ,使用了 Spring Data Jpa 没有用 Mybatis 。
    还有配套的前端,这是体验地址: https://xryder.cn/
    集成了 Spring AI 。
    gejun123456
        70
    gejun123456  
       1 天前   ❤️ 1
    @kilakilia007 可以试试 MybatisCodeHelperPro 插件,有方法名生成 sql 的功能 https://brucege.com/doc/#/methodNameToSql 还有这最好的 xml 代码提示,写 sql 几乎所有地方都有代码提示
    CuChulainn
        71
    CuChulainn  
       1 天前   ❤️ 1
    经典 ORM vs XML 党。。抛开具体场景聊绝对的对错有意义吗?
    zepc007
        72
    zepc007  
       1 天前
    @cmlx1014 #56 都 5202 年了, 还有人在吹语言呢, xswl.池塘共有十朵莲, 人家只采一朵, 你采九朵莲
    zzzmh
        73
    zzzmh  
       1 天前
    我站队 mybatisplus ,jpa 和 hibernate 都用过,mbp 也有 ORM 的部分偶尔也用,但有些时候还是自己写 SQL 最放心最靠谱。效率优化的时候也是直接改 SQL 。实在摸不着头脑,SQL 语句给 GPT 看。
    rlds
        74
    rlds  
       1 天前
    mybatis mybatis-plus jpa 都用过,更喜欢用 mybatis-plus ,jpa 用起来太难受,简单 CRUD 倒是方便,但是遇到动态 sql 条件拼接处理起来就很难受。
    Kaiv2
        75
    Kaiv2  
       1 天前   ❤️ 1
    感觉 Java mybatis 挺好用的,分离了 sql 和 java 代码,特别是大部分业务都有关联表查询的情况
    burymme11
        76
    burymme11  
       1 天前
    @YVAN7123
    Swagger ,这套接口文档的处理方式丢掉吧,个人建议试试 ApiFox ,项目里面只引入 io.swagger 包,IDEA 装个 ApiFox 插件,简单方便,无需再处理 swagger 本身的配置,接口文档通过插件一键生成,大家共享。
    JWT/Spring Security ,上面也有老哥说了,要不你可以看看 sa-token ,这个我认为代码设计更精简,使用方便,文档也全。
    micean
        77
    micean  
       1 天前   ❤️ 2
    用 mybatis 是方便在 orm 、sql 之间随意切换
    现在除了动态 sql 丑陋一些,在 idea+ai 的加持下,写 sql 非常舒服,还能直接贴在 db gui 上直接跑,没有心智负担
    那些吹类似 JOOQ 的,我用了一天就卸载了,代码效率至少慢个 20%以上
    angryfish
        78
    angryfish  
       1 天前   ❤️ 1
    支持 jpa 的估计做的项目业务偏简单吧。
    mybatis 的估计需求各种奇葩,这张表要几个数据,那几张表也要几个数据,请求量还不是很大的场景,一个 sql 完成整个接口。
    我还是认为 mybatisplus 好用。既可以满足简单查询,不用写 sql ,又可以支持复制 sql 。简直完美。
    angryfish
        79
    angryfish  
       1 天前
    脚手架我推荐将自己做的项目改个名字,那些业务代码删掉,就是最好用的脚手架,用第三方的还得理解他的代码,浪费时间。
    jiakme
        80
    jiakme  
       1 天前
    技术选型最终取决于决策者, 而不是使用者.
    选型需要考虑, 当前团队成员技术栈, 后续团队招聘, 历史业务维护, 新业务推广, 整体技术栈等等.
    在上述语境中, 还要综合考虑, 优先核心技术栈, 其次边缘技术栈.
    所以非核心单一技术栈优劣是最后才考虑的.
    而数据库操纵场景, mybatis, JOOQ 等等框架, 性能效率拉不开差距, 优先考虑团队熟悉和接受程度.
    sagaxu
        81
    sagaxu  
       1 天前
    @xuanbg 把<if></if>写在 foo.xml 里和注解里没什么区别,写注解里还要受制于 Java 的多行文本支持。

    @SoulSleep JPA 是个规范,Hibernate 只是 JPA 的实现之一,也有其他实现。在中日韩之外,JOOQ 普及率比 mybatis 高一个数量级,且不说 JOOQ 授权很贵,哪个更小众?

    @rlds 用 JPA 的一般也会用 JdbcTemplate 或 HQL 之类的手写 SQL/HQL ,并不是只用自动合成或注解。
    chuck1in
        82
    chuck1in  
       1 天前
    @memedahui 如果面临大量的 sql 要编写的话 JOOQ 就是好的技术选型。

    5 楼有模板项目可以用
    chuck1in
        83
    chuck1in  
       1 天前
    @sketcherly jpa 不太好用,我也不推荐。现在有很多新的 orm 选型可以用,只是太多人不知道,也不愿意尝试。吃着现在这碗饭又觉得难吃又不愿意重新点菜。
    chuck1in
        84
    chuck1in  
       1 天前
    @sagaxu 日韩现在也没太用 mybatis 了,都淘汰了。除了一些远古项目还在用。
    cmlx1014
        85
    cmlx1014  
       1 天前
    @zepc007 #72 华为阿里头条等等互联网,里面的系统、中台,中国大大小小的企业级开发都是 Java 也不用 c#了。用 PHP 怎么开发?一个语言除了本身,还有生态,比较一下有什么问题吗?
    chuck1in
        86
    chuck1in  
       1 天前
    @sagaxu 恐怕他们看不懂 DSL 和字符串拼接实现模式的本质区别,说多了鸡同鸭讲,上面还有说特别喜欢 xml 的呢。
    chuck1in
        87
    chuck1in  
       1 天前 via iPhone
    @feiyekong 这个框架也不错。doma 现在出 3 了已经。
    Gooon
        88
    Gooon  
       1 天前
    renren-security 比较符合要求。
    nananqujava
        89
    nananqujava  
       1 天前
    可以用 bean searcher 当查询, MP 当增删改, 只能说将就用
    haython
        90
    haython  
       1 天前
    @sketcherly 不批判老的(不一定是差的,有些也只是因为市场最高,吸引眼球),怎么能兜售新的
    cppc
        91
    cppc  
       23 小时 42 分钟前
    现成的脚手架实在是很多,但是质量见仁见智,建议选好了 fork 一份,配个 sonar 的 action 走一圈,是人是妖心里也好有个数。
    SoulSleep
        92
    SoulSleep  
       23 小时 33 分钟前
    @sagaxu #81 在中日韩之外,JOOQ 普及率比 mybatis 高一个数量级 请拿出数据吧,我搜了一下没有任何数据可以支持你的这个观点...直接问了一下 Chat...
    根据开源项目的 GitHub 星标、Stack Overflow 问答量、NPM 下载量(间接反映)、Google Trends 等综合数据判断,MyBatis 和 jOOQ 的用户比例可能在 7:3 或更高。也就是说,在 10 个数据库操作框架用户中,约有 7 个使用 MyBatis ,而 3 个使用 jOOQ 。

    请继续附上比较客观的证明吧。
    WashFreshFresh
        93
    WashFreshFresh  
       23 小时 23 分钟前
    @sketcherly 46 哈哈哈哈,会的,有时候就是为了犟两下或者强迫症不想用注解直接写 sql 。
    sagaxu
        94
    sagaxu  
       22 小时 53 分钟前
    @SoulSleep

    根据 Pivotal 的 Josh 发起的问卷调查,3000 多人投票

    JPA: 60.8%,raw JDBC / JdbcTemplate: 20.1%,JOOQ: 12.6%,MyBatis: 6.4%

    https://x.com/starbuxman/status/1528655715933597697

    搜索量和星标,中国人口多,多搜几次就淹没了,没有投票来的客观。
    hellomsg
        95
    hellomsg  
       22 小时 9 分钟前
    @angryfish #79 是的,我也真么认为,别人的脚手架很多多余的代码,很多实现方案你可能并不认同,得不偿失。最好用自己几个项目沉淀下来的代码,优化优化,慢慢完善最靠谱。
    remember5
        96
    remember5  
       20 小时 48 分钟前
    @songche 脚本改和 idea 的全局替换应该差不多吧
    songche
        97
    songche  
       1 小时 25 分钟前
    @remember5 文件及目录名字没法替换吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3384 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:54 · PVG 12:54 · LAX 20:54 · JFK 23:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.