
感觉字符串拼接 sql 太麻烦了,尤其是 sql 中间还有动态参数,需要根据参数是否为空动态拼接 sql 段落,代码太丑了,可读性也很差。想问下有没有更好的拼接 sql 方式。
1 cpstar 2022 年 6 月 7 日 preparestatement? |
2 Edward4074 2022 年 6 月 7 日 via iPhone 最近刚做了一个基于 mybatis plus 条件构造器的 sql 生成器。动态拼接的部分 mybatis plus 实现得特别优雅 |
3 adoal 2022 年 6 月 7 日 via iPhone 不拼接 |
4 git00ll 2022 年 6 月 7 日 mybatis 拼 xml 。 mybatis dynamic 代码拼 sql |
5 yousabuk 2022 年 6 月 7 日 via iPhone preparestatement? {}? |
6 zed1018 2022 年 6 月 7 日 JDBC 我不知道,但是如果参数都是 equals 的话,在 JPA 里可以用 Example 查询,hibernate 会自动把有值的字段传递到 where 里 |
7 SMGdcAt4kPPQ 2022 年 6 月 7 日 ebean |
8 dcsuibian 2022 年 6 月 7 日 拼接 SQL 分分钟被注入,至少上个预编译 |
9 dcsuibian 2022 年 6 月 7 日 条件动态的话,感觉 Spring Data JPA 的 Specification 是个好东西 |
10 BBCCBB 2022 年 6 月 7 日 mybatis xml. |
11 EscYezi 2022 年 6 月 7 日 via iPhone mybatis 就是用来解决这个的,虽然复杂到一定程度可读性也不太好,但总比 java 代码拼接强 其实个人觉得最好的方式是 jooq |
12 SMGdcAt4kPPQ 2022 年 6 月 7 日 @EscYezi 个人觉得最好的是 EF Core 这种 |
13 zoharSoul 2022 年 6 月 7 日 mybatis |
14 anakinsky 2022 年 6 月 8 日 querydsl |
15 sorakylin 2022 年 6 月 8 日 Ktorm 解君愁 |
16 brust 2022 年 6 月 8 日 如果不是太追求效率问题 还是用框架吧 |
17 fpure 2022 年 6 月 8 日 答案就是 mybatis |
18 james122333 2022 年 6 月 8 日 mybatis 也是要写 if 差别在于写在设定而已 然而设定难以除错和补全 "需要根据参数是否为空" 这个写函数包起来就好(当然三元运算更丑一点) lambda 都可以 为空就拼接空字串 只是看你要不要写的完整 随便一个范例 MyStatement s = QueryCreator.create( "select * from user where status = 1", QueryCreator.ifNotNull( "name", name, "email", email, "address", address ) ) 生成"select * from user where status = 1 where name = ? and email = ? and address = ?" PreparedStatement 再带入参数而已 |
19 james122333 2022 年 6 月 8 日 via Android QueryCreator.ifNotNull(Object ... objs) QueryParams QueryCreator create( |
20 james122333 2022 年 6 月 8 日 via Android QueryCreator.create(Object ... objs) MyStatement |
21 suyabgaran 2022 年 6 月 9 日 JOOQ 解君愁 |
22 ychost 2022 年 6 月 10 日 mybatis-plus YYDS ,JPA (千万别用,MD 升级 API 都没了) |
23 coderstory 2022 年 6 月 16 日 jsqlparser ? |