Sprint Boot 一定要写 SQL 吗?

2022-04-02 10:16:35 +08:00
 coolair
看了本书,无论使用 XML 模式还是注解模式,都要自己写 SQL ,既然要写 SQL 那 ORM 的意义何在?

另外,你们一般使用哪种模式?
3817 次点击
所在节点    问与答
31 条回复
yejinmo
2022-04-02 15:08:32 +08:00
搭车问一下,Java 有没有类似 C# 的 LINQ to SQL 查询框架

```
var dataList = session.From<Models.MetaData>()
.Where(q => q.Type == 1 && q.TableName == tableName)
.OrderByDescending(q => q.TagName)
.ToList();
```
watzds
2022-04-02 15:30:41 +08:00
@coolair #16 可以自动生成这些东西。mybatis generator 或者自己改造
XiLingHost
2022-04-02 15:33:57 +08:00
建议直接用 nosql ,比如 mongodb 或者 es ,一句 sql 都不用写
Anshay
2022-04-02 16:09:52 +08:00
@coolair jpa 就相对简单很多了
paradoxs
2022-04-02 16:12:12 +08:00
假设你是一个小一点的项目,直接用 mybatisplus 这个框架,可以不写任何 SQL 。 就算是多表查询也可以分步查询,不需要写 resultmap 。
coolair
2022-04-02 17:12:08 +08:00
@Bingchunmoli @watzds 确实可以使用 generator 自动生成,已经试过了。

@Anshay @potatowish @wudaye @hidemyself @lawler @lawler 刚用了下 JPA ,还不错,小项目应该不用写 SQL 了。

@hay313955795 @xuyang2 jOOQ 用的多吗,很少看到介绍啊。

@yejinmo 这个就跟 python 的 sqlalchemy 很像了,哈哈。
banmuyutian
2022-04-02 17:39:33 +08:00
@yejinmo #21
有类似的(Mybatis-Plus)但是做不到 LINQ 那么强大
zhazi
2022-04-02 18:23:45 +08:00
@yejinmo queryFactory.selectFrom(tableA)
.leftJoin(tableB).on(tableA.filed.eq(tableB.filed))
.leftJoin(tableC).on(tableC.field.eq(tableB.filed))
.where(tableA.field.eq(XXXX));
刚在项目里粘贴出来一段改了下变量名
TWorldIsNButThis
2022-04-02 20:30:09 +08:00
@yejinmo querydsl jooq ebean…
国外这类框架挺多的
hingbong
2022-04-02 22:55:50 +08:00
jooq 挺舒服
hay313955795
2022-04-03 18:41:55 +08:00
@coolair 国外用的多吧...毕竟国外的项目目标性比较专一....不想国内啥表都要关联一下..可能就需要用上各种手写的 sql 了.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX