都用注解的形式了吗? 另外有没有更简洁的 orm 用,做不太复杂的项目效率高点的
1
brucewuio Mar 6, 2019
不复杂的话 尝试一下 go 的 gorm
|
2
hjchjc1993 Mar 6, 2019 spring data jpa
|
3
cafreeze Mar 6, 2019
spring data jpa
|
4
yiyi11 Mar 6, 2019
同意楼上,不复杂的话用 spring data jpa。
|
5
daveze Mar 6, 2019
mybatis-plus
|
6
TommyLemon Mar 6, 2019
|
7
TommyLemon Mar 6, 2019
不用写代码,自动化接口和文档 ORM 库 APIJSON,5K Star 远超 Java 第二大 ORM 库 Hibernate
https://www.oschina.net/news/101787/apijson-3-1-0-released#comments |
8
sonyxperia Mar 6, 2019 @brucewuio #1 你这种推荐,是让人家把整个项目语言都换了吗?
|
9
TommyLemon Mar 6, 2019
|
10
lhx2008 Mar 6, 2019
Mybatis 不能算是真 ORM 吧,如果用 Mybatis 的话,XML 还是少不了,写在代码里面有点难看。
但是现在 SpringBoot 越来越多人用 Spring Data JPA 了,不过灵活性和性能都稍差 用 Jooq 也可以,不过功能没有 JPA 强大 |
11
TommyLemon Mar 6, 2019
|
12
Malthael Mar 6, 2019
感觉还是自己手写 sql 比较放心,注解感觉看着难看,尤其是长 sql
|
13
yukiww233 Mar 6, 2019
这一大波硬广。。
|
14
LemonCoo1 Mar 6, 2019
mybatis-plus , tk Mapper
|
15
toconoma Mar 6, 2019
用 xml 更方便管理吧,sql 跟代码分离
|
16
rizon Mar 6, 2019 |
17
Duolingo Mar 6, 2019 via Android
射爆科技可还行
我一直用 xml。。。毕竟灵活啊 |
18
qiyuey Mar 6, 2019
目前来看 注解 相比 XML 和 ORM,功能性、灵活性、可开发性都是有一定优势的,所以我之前在美团的团队都是使用注解的,后来来了阿里,也带动同事都使用注解了
|
19
TommyLemon Mar 6, 2019
@codingadog 射爆科技 是啥?英文错打成汉字了?
|
20
leon0903 Mar 6, 2019
我也觉得注解方式比 xml 方式要好啊。。。。看代码一眼就能看到 sql,不需要任何跳转之类,不用分散注意力。
|
21
BCy66drFCvk1Ou87 Mar 6, 2019
受不了 XML
|
22
lihongjie0209 Mar 6, 2019 @brucewuio 在 java 中如何尝试 go 的 orm ?
|
23
TommyLemon Mar 6, 2019
上面提到的各种通用 Mapper 的确做到了 单表 的增删改查,省去了大量的 SQL 或 调用 ORM 方法的代码,
但即便这样,还是远远不如 APIJSON,因为用 APIJSON 自动化 API 后端都不用写代码! 更不用说 APIJSON 还支持多表组合、自由嵌套、各种 JOIN 了, 还有 多字段排序 order by,多字段分组 group by,聚合函数 having 等几乎所有 SQL 的常用功能, 支持 MySQL, PostgreSQL, Oracle 数据库,可跨数据库、跨模式查询,甚至是 JOIN 查询(APP JOIN), 以上这些功能全都不用后端写一行代码就能提供给前端 增删改查 的各种 API ! 创作不易,GitHub 右上角点 Star 支持下吧^_^ github.com/TommyLemon/APIJSON |
24
TommyLemon Mar 6, 2019
|
25
blless Mar 6, 2019 via Android @TommyLemon 推广哥你又来辣
|
26
k9990009 Mar 6, 2019 via Android
mybatis-plus +1,在此基础上做请求参数解析,结合这个插件,做个 CURD 的框架,单表的 CURD 完全不用写,只要写前端。要重写的都是多表操作,和特殊的业务。
|
27
9Rubi Mar 6, 2019
广告太硬
|
28
mango88 Mar 6, 2019 via iPhone
spring boot + JPA
|
29
zjp Mar 6, 2019
注解没有实现全部功能,在注解写 XML 字符串真的难受...
|
30
fkdog Mar 6, 2019
真心觉得那什么 mybatis-plus 也没什么存在的必要,一个功能 N 种风格迥异的 api 用的真是渗的慌。
mybatis 不好用主要还是由于缺乏通用 mapper 支持,字段多的表 create/update 手写非常复杂。 自己写个 sqlprovider,以及 crud 通用接口,根据反射获取一下 entity 字段拼接一下 create/update 的 sql 语句就好了。2 个 java 类的事。 |
31
S9Yh4wIFsBG7jnE4 Mar 6, 2019
我从 jpa 才改成了现在的 mybatis 注解形式的 依然是 springboot 所以 jpa 和 mybatis 都会单表的增删查改
jpa 确实很方便 不需要自己去写 sql 语句,但是你如果想改 也可以在 repository 接口里,覆盖原有的方法,自己写 sql jpa 是根据你的实体类去创建表,mybatis 要你先创建好了再对应到实体类 |
32
BBCCBB Mar 6, 2019
用 tkmybatis 或者 mybatis-plus, 但是不要用它的其他 api, 只用它单表的增删查改,其他的全部用 mybatis 方式写 sql。
|
33
yemoluo Mar 6, 2019
用啊用啊,注解形式那是简单的还可以,复杂的工程,改一个代码会死人
|
34
gowk Mar 7, 2019 via Android
虽然我也是 Go 吹,但不是这么吹的。。
我建议用 jdbcTemplate,灵活强大,或者 mybatis-plus,个人不喜欢 JPA |
35
gejun123456 Mar 7, 2019 via iPhone
注解简单的 sql 还行 复杂的写 xml 好 resultmap 好维护 推广一波我开发的 idea 插件 :) mybatis 像 springdatajpa 一样生成 sql 大幅提升效率 https://github.com/gejun123456/MyBatisCodeHelper-Pro
https://raw.githubusercontent.com/gejun123456/MyBatisCodeHelper-Pro/master/screenshots/mybatisCodeHelper.gif |
36
liuyibao Mar 7, 2019
PHPer 都知道再好用也不会有 php 框架的查询构造器厉害😃
|
37
TommyLemon Mar 7, 2019
@liuyibao 能做到不写代码吗?/滑稽
APIJSON 就做到了。 后端不用写接口、也不用写文档就能提供"接口"和"文档",前端 /客户端不用看"文档"就能调用"接口"。 https://github.com/TommyLemon/APIJSON/wiki |
38
TommyLemon Mar 7, 2019
@9Rubi 没看到帖子里有广告啊,Mybatis 都这么火了还需要推广嘛
|
39
TommyLemon Mar 7, 2019
@zjp @GTim @fkdog @shayang888 @gejun123456
不管是注解还是调用 ORM 或 Mapper 的方法,都很难做复杂的查询,尤其是连表查询、子查询等, 而且都要写一堆繁琐的配置,不直观甚至有些还做不了。 APIJSON 就提供了自动化的各种 JOIN #④ "join":"&/Table0/key0@,</Table1/key1@" 多表连接方式: "<" - LEFT JOIN ">" - RIGHT JOIN "&" - INNER JOIN "|" - FULL JOIN "!" - OUTTER JOIN "@" - APP JOIN 其中 @ APP JOIN 为应用层连表,会从已查出的主表里取得所有副表 key@ 关联的主表内的 refKey 作为一个数组 refKeys: [value0, value1...],然后把原来副表 count 次查询 key=$refKey 的 SQL 用 key IN($refKeys) 的方式合并为一条 SQL 来优化性能; 其它 JOIN 都是 SQL JOIN,具体功能和 MySQL,PostgreSQL 等数据库的 JOIN 一一对应, "ViceTable":{ "key@:".../MainTable/refKey" } 会对应生成 MainTable ... JOIN ViceTable ON ViceTable.key=MainTable.refKey。 例如 { "[]": { "join": "&/User/id@,</Comment/momentId@", "Moment": { "@order": "date-" }, "User": { "@column": "id,name", "name~": "t", "id@": "/Moment/userId" }, "Comment": { "momentId@": "/Moment/id" } } } 自动生成 SELECT Moment.*,User.id,User.name,Comment.* FROM Moment INNER JOIN User ON User.id = Moment.userId LEFT JOIN( SELECT * FROM Comment ) AS Comment ON Comment.momentId = Moment.id WHERE User.name REGEXP 't' ORDER BY Moment.date DESC LIMIT 10 OFFSET 0 #还有自动化子查询 "key@":{ "range": "ALL", "from":"Table", "Table":{ ... } } 其中: range 可为 ALL,ANY ; from 为目标表 Table 的名称; @ 后面的对象类似数组对象,可使用 count 和 join 等功能。 例如 "id@":{ "from":"Comment", "Comment":{ "@column":"min(userId)" } } 自动生成 WHERE id=(SELECT min(userId) FROM Comment) GitHub 右上角点 Star 支持下吧 ^_^ https://github.com/TommyLemon/APIJSON/blob/master/Document.md#3.2 |
40
TommyLemon Mar 7, 2019
@TommyLemon 都是根据前端传的请求 JSON 自动生成的 SQL,后端不用写一行代码哦
|
41
jasondeepy Mar 7, 2019 via iPhone
@rizon spingboot 能用这个么?
|