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