不是 JPA,不是 Mybatis,Java 类里直接 String sql ="select xxxx" ,然后调用一个封装的 xxx.select()方法,大家如何看待这种行为?
不是 JPA,不是 Mybatis,Java 类里直接 String sql ="select xxxx" ,然后调用一个封装的 xxx.select()方法,大家如何看待这种行为?
|
chendyOct 23, 2020
1
见过的这种写法都很水,一般连接池也没有,事务,异常处理也不完善
但是项目不重要的话也就无所谓了… |
|
libookOct 23, 2020
2
有很多看起来“非主流”的代码可能是菜鸡写的烂代码也可能是大牛精心构造,得看这么写的理由是什么,有没有更好的方案。理由说得过去就合理,说不过去就不合理,只要满足高可读性、高可靠性、高性能的原则就是好代码。
|
|
zoharSoulOct 23, 2020
3
你说的是 jdbc?
我觉得没啥问题啊.. 有点就是简单查询下没必要引入个 jpa 吧 |
|
lxk11153Oct 23, 2020
4
JdbcTemplate ?
|
|
cpstarOct 23, 2020
5
最终不还要翻译到 SELECT ?
这种还好,就是不知道条件那里怎么写,如果写成 String sql = "SELECT * FROM xxx WHERE id='"+id+"'",那就真蜜汁自信了。 |
|
LowBiOct 23, 2020 via Android
6
哈哈哈,目前公司写接口就这样,啥也不是
|
|
iisky1121Oct 23, 2020
7
???,jdbc 不是这样的吗?
|
|
oma1989Oct 23, 2020
8
刚写了个调用 API 接口取数,JDBC 直连落库的一次性 JAR .....
|
|
oma1989Oct 23, 2020
9
简单的功能简单写,总不至于大炮打苍蝇吧.....
|
|
Bromine0x23Oct 23, 2020
10
要是 Java 多行字符串给力点的话,早就直接用 JdbcTemplate 了
|
|
vincent7245Oct 23, 2020
11
这个需要具分析了,看业务需求,比如并不是所有的 jdbc 都要用连接池,甚至有的项目绝对不能用连接池。还有就是可能受限于项目规模没必要用第三方的框架,没必要大炮打蚊子。不过直接 String sql = “”; 确实是有点 low,好歹封装一下吧
|
|
xiangyuecnOct 23, 2020
12
返璞归真的写法。前提该懂的都懂。是最高效最简洁的写法。对于维护难易,就算是 Mybatis 也都是各有千秋,评价不了。
但看这个 sql 用 String 类型,应该是菜鸟,100%进行了字符串无任何处理的拼接。 |
|
nulIptrOct 23, 2020
13
曾经我也用 ef,后来发现还是 dapper 好用。
模板生成增删查改方法,更复杂的方法直接上 sql 写好注释,复杂业务下 sql 可维护性比 orm 高 再说你们用 orm 的就没见过慢查询吗。。。 |
|
FireFoxAhriOct 23, 2020
14
之前用 scala 写 play 框架,就是 anorm 。。封装了下 jdbc,全部手写 sql
|
|
koalOct 23, 2020
15
手工写 mysql 到 java 代码中厮混,就是耍流氓!
|
|
Qlccks2Oct 23, 2020
16
得看需要才知道合理不合理,如果整个系统全是这么写的肯定不合理。
|
|
lichaoOct 23, 2020
17
古代的项目都是这么写的
|
|
kanemochiOct 23, 2020
18
项目很简单,就几个 sql 的规模的话也未尝不可
|
|
zgzhangOct 23, 2020
19
注入教做人
|
|
SabaPingOct 23, 2020
20
我们就这么写啊,直观,sql 不留坑,所见即所得。
当然楼上老哥说的好,具体分析,看业务需求 |
|
21
碰见过通过 http 传 sql 到另一个系统执行的
|
|
yinzhiliOct 23, 2020
22
都是赶时间引起的
|
|
wanguorui123Oct 23, 2020 via iPhone
23
碰见过一个 sql 比我写的作文还长的栗子
|
|
fhsanOct 23, 2020
24
具体问题具体分析,不要生搬硬套,懂得都懂
|
|
wysnylcOct 23, 2020
25
哦吼,注入
|
|
superrichmanOct 23, 2020 via iPhone
26
sqlmap 狂喜(不是
赶紧跑吧,说不定哪天就被脱裤(划掉 |
|
wysnylcOct 23, 2020
27
@superrichman #26 我真佩服他们不怕死的劲头
|
|
qwerthhusnOct 23, 2020
28
主要是 Java 不支持多行文本(除了最新版本,但是这个应该没真正的项目去用),所以写出来的多行 SQL 没法看
但是如果换了 Kotlin,有多行文本的话,就好多了 |
|
wowo243Oct 23, 2020
29
我们现在的项目里就是这么写的。。。。
用的是 spring jdbc |
|
wowo243Oct 23, 2020
30
感觉好处就是直接写 sql,能针对性的优化吧,囧;
还有就是啥都能自己造; 坏处,就是好像这玩意没那么流行,感觉更常见的还是 mybatis |
|
WaldenHorizonOct 23, 2020
31
我查询全写 sql,增删改用对象
|
|
wangyanruiOct 23, 2020 via Android
32
ORM + 充血模型 万岁
|
|
CbdyOct 23, 2020 via Android
33
|
|
RemindersOct 23, 2020 via iPhone
34
我以前公司项目全是 jdbcTemplate,现在做 ETL 连 Spring 都没有映入。
|
|
iTanXOct 23, 2020
35
@chendy
有没有连接池取决于获取到的是什么数据源,有没有事务取决于数据源有没有事务控制器控制,异常处理完善不完善取决于楼主说的那个 select()方法是否写的漂亮。你确定很水?事实上,很多场景 JDBC 才能满足需求,mybtis 等框架不适用于所有业务场景的 |
|
hafuhafuOct 23, 2020
36
新项目,除非只写个位数的简单 sql,不然就算是全手写也肯定是 mybatis 更方便和易读吧,加个依赖可能一两分钟的事吧。
老项目可能是遗留呢,以前的人都这么写,接盘的人也纷纷跟着写。 |
|
jzmwsOct 23, 2020
37
我就是这样写的 , jpa 预编译的 动态生成 sql 语句
|
|
fansanggOct 23, 2020
38
怎么办,Google 的 room 也是在类里写 sql 语句
|
|
wflwqOct 24, 2020
40
有个需求要批量执行某一条更新语句 N 次,碍于 mybaits 性能,采用了原生的 batch 模式,语句就直接怼代码里了。
仔细想想写 xml 文件里解析出来也便于维护一点 |
|
melkorOct 24, 2020 via iPhone
41
@yuhuan66666 这脑洞,长见识了
|
|
jzphxOct 24, 2020
42
我见过,之前接手了老外同事的项目,原汁原味的 sql,数据库连接池都不用。看到有个热帖有人回复说国内码农不写注释嘛,国外的摸鱼码农也不写注释。
|
|
AchiiiOct 24, 2020
43
这样不怕注入吗
|
|
forbreakOct 24, 2020
44
如果参数不是通过+号拼接,那就是正常行为。
|
|
PDXOct 24, 2020 via iPhone
45
这样写没毛病吧?
|
|
rodrickOct 24, 2020
46
我这甚至有前端动态拼 sql 在请求接口里,后台直接拿封装好的一套方法拿出这个接口的 sql 去跑的。。
|
|
sun1991Oct 24, 2020
47
@nulIptr 同 EF 转 Dapper 爱好者.
感觉简单的事情 ORM 能做的挺好, 但是复杂度上去了, ORM 同样处理不好, 还不如直写 SQL 来的简单明了. |
|
yjxjnOct 24, 2020
48
@xiangyuecn 说的对,最简洁高校,除了不易维护,其他都还好。。
|
|
xumng123Oct 24, 2020 via iPhone
49
框架大多数都提供原生 sql 访问,这样写也不是不行,比如数据访问层无法满足需求
|
|
shadownetOct 24, 2020
50
就是你们这些观点让原本简单的事情复杂化,本来一个 sql,10 毫秒搞定的,外面套一堆东西,最后 100 毫秒都不够,然后让客户加硬件
|
|
rb6221Oct 24, 2020
51
我们的项目需要跑每日报表,计算量大 计算逻辑复杂,就是直接 jdbc,不然性能跟不上
|
|
elintwentyOct 24, 2020
52
看项目复杂度,十万行和五百行当然不会是同一个结构。但是直接传 sql 需要处理注入等安全问题吧?
|
|
DoctorCatOct 24, 2020
53
小明:劳资刚从写 js 转 java,明明 run 起来了但你竟然告诉我这么写不行?
|
|
skinnyOct 25, 2020
54
只要不是直接拼接字符串,用户输入用绑定参数,不用视之为洪水猛兽。
|
|
anterosOct 25, 2020
55
我是万万没想到居然有这么多人支持直接写 sql,看来我在 java 里也能混口饭吃了
|
|
Bromine0x23Oct 25, 2020
56
首先要明确:直接写 SQL≠拼接参数。
拼接参数是有安全问题,但是只要是用绑定参数,直接写 SQL 就不存在安全隐患。 |
|
CantSeeOct 28, 2020
57
亚信?
|