V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fxjson
V2EX  ›  Java

学习 springboot 的困惑

  •  1
     
  •   fxjson · 2020-06-26 16:47:28 +08:00 · 9340 次点击
    这是一个创建于 1390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直比较抵触编译型语言,可能是我太懒了,感觉干啥都费劲和麻烦,搭建过 ssm,最终因为感觉配置麻烦而放弃,接触了 springboot,感觉还是蛮好的,一些默认配置已经帮我们做了,现在学习到集成 db,貌似可选的有 jpa 个 mybatis, 尝试写了个 user 表,忽然发现 mybatis 挺灵活,但是感觉写 xml 总感觉不爽,不知道大家的实际项目中用的什么 db 层

    第 1 条附言  ·  2020-06-27 08:28:00 +08:00
    我就想知道实际项目中,什么用的比较多
    83 条回复    2020-06-30 18:26:31 +08:00
    darrenfang
        1
    darrenfang  
       2020-06-26 17:00:42 +08:00 via iPhone
    jpa
    BenjaminReed
        2
    BenjaminReed  
       2020-06-26 17:01:30 +08:00   ❤️ 2
    mybatis 总写 xml ?
    试试 MyBatis-Plus ?
    mp.baomidou.com
    murmur
        3
    murmur  
       2020-06-26 17:03:45 +08:00   ❤️ 4
    xml 才灵活呢,你写复杂一点的 sql 写到 annotation 里光一个排版就恶心死你
    dcalsky
        4
    dcalsky  
       2020-06-26 17:07:04 +08:00 via Android
    借楼问,用 jpa 的同学是按照最佳实践来用的吗( entitygraph 之类的),还是只用 @query 写 sql ?
    felixin
        5
    felixin  
       2020-06-26 18:35:50 +08:00 via Android
    试试 jooq
    draymonder
        6
    draymonder  
       2020-06-26 18:52:18 +08:00
    数据量小 直接查全表,然后程序负责 join 就好了, 关联比较多的话 用 mybatis 好
    Mcorleon
        7
    Mcorleon  
       2020-06-26 19:04:03 +08:00   ❤️ 1
    都用 springboot 了难道不是注解+application.yml 一套解决了吗?估计你使用姿势有误
    napsterwu
        8
    napsterwu  
       2020-06-26 19:06:03 +08:00 via iPhone
    复杂 sql 不用 xml 写就是给自己挖坑
    EastLord
        9
    EastLord  
       2020-06-26 19:06:53 +08:00
    mybatis 和 jpa 一起用,复杂查询用 mybatis
    xuanbg
        10
    xuanbg  
       2020-06-26 19:37:34 +08:00
    mybatis 也可以用注解,不写 xml 。

    譬如:
    /**
    * 查询报表模板
    *
    * @param dto 查询参数 DTO
    * @return 报表模板集合
    */
    @Select("<script>select id, `code`, `name`, remark, is_invalid from icc_template where tenant_id = #{tenantId} " +
    "<if test = 'keyword != null'>and (`code` = #{keyword} or `name` like concat('%',#{keyword},'%')) </if>" +
    "order by created_time</script>")
    List<TemplateDto> getTemplates(SearchDto dto);
    echo1937
        11
    echo1937  
       2020-06-26 19:52:37 +08:00
    mybatis 和 jpa 一起用,复杂查询用 mybatis
    CoderGeek
        12
    CoderGeek  
       2020-06-26 19:56:35 +08:00
    jap
    wjup
        13
    wjup  
       2020-06-26 19:57:30 +08:00 via Android
    JdbcTemplate
    CoderGeek
        14
    CoderGeek  
       2020-06-26 19:58:24 +08:00
    MyBatis-Plus
    还有种叫 AR ( Active Record )
    java 的 ORM 很多
    pomelotea2009
        15
    pomelotea2009  
       2020-06-26 20:02:34 +08:00 via Android
    #7 和#10 正解,排版你自己换行加缩进(没找过有没有插件可以自动格式化),动态 sql 用<script>注意特殊字符的转义
    Spring data jpa 也有 Native 查询,只是动态 sql 就没那么灵活,而且如果要动态表名 /动态排序分页也不太好办
    anguiao
        16
    anguiao  
       2020-06-26 20:05:50 +08:00 via Android
    一般情况下我都很讨厌 XML,但是 MyBatis 的 XML 并没有很复杂,反而很灵活,所以我并不抵触。
    cheng6563
        17
    cheng6563  
       2020-06-26 20:36:38 +08:00 via Android
    原生 mybatis 挺不好用的,用 mybatiscplus 吧
    xiangyuecn
        18
    xiangyuecn  
       2020-06-26 21:42:12 +08:00
    @murmur #3 不喜欢 mybatis 的原因就是因为:它太拘泥于要创建 xml 文件了。如果能用 xml 字符串也不会有这么嫌弃,哪里要用定义到哪 豪情奔放😂 最后我用 SqlMapper,这样就不用再去定义 xml 文件也能用上 mybatis 的高级特性。
    nullpointerskz
        19
    nullpointerskz  
       2020-06-26 21:43:30 +08:00
    领域驱动设计+jpa
    murmur
        20
    murmur  
       2020-06-26 21:44:50 +08:00
    @xiangyuecn 企业应用开发不可能不写 sql 的,稍微几个复杂查询和报表叫各种教做人,简单的查询 hibernate 真挺好
    yannxia
        21
    yannxia  
       2020-06-26 22:34:21 +08:00
    Jooq 好一点也好不太多,Mybatis 就和写 Sql 没啥区别,Jpa 复杂 Query 还不如写 SQL 。
    总而言之,都不太爽。
    levon
        22
    levon  
       2020-06-26 23:00:24 +08:00
    用过 entityframework 的我再去 xml 写 sql,以前的我就是这么拒绝 spring mvc 的,不过现在又被逼回来写屎一样的 xml,每次写都很不爽。
    sagaxu
        23
    sagaxu  
       2020-06-26 23:18:21 +08:00 via Android
    简单的查询走 jpa,复杂的 jdbctemplate 走起,mybatis 现在基本上只有中国人还在用
    alcarl
        24
    alcarl  
       2020-06-26 23:27:45 +08:00 via Android
    没有多种数据库支持需求的话,xml 写可以最大化发挥数据库各种原生特性来写复杂查询简化代码提高效率,随意优化查询。数据库懂得越多 xml 越香
    Muyiafan
        25
    Muyiafan  
       2020-06-27 00:15:16 +08:00
    jpa + querydsl
    tctc4869
        26
    tctc4869  
       2020-06-27 01:57:06 +08:00 via Android
    mybatis 本质就是面向模板引擎,自己用 freemaker 做 sql 模板引擎
    ericgui
        27
    ericgui  
       2020-06-27 02:33:53 +08:00
    如果有人给你支付工资,并且你不是一个人在战斗,我觉都还好

    别你自己一个人玩,没人付钱,而且卡在某地地方还没办法找人上了,就傻了
    hellofrank
        28
    hellofrank  
       2020-06-27 09:13:19 +08:00
    简单的 crud 用 jpa, 复杂的上 mybatis.
    另:
    java 技术讨论 qq 群:731376782,欢迎各位加入
    magiclz233
        29
    magiclz233  
       2020-06-27 09:16:50 +08:00
    jpa 就是 hibernate 那一套,mybatis sql 比较灵活,我觉得看你表结构的复杂程度吧 如果很复杂的话, 用 mybatis 好点,如果比较简单 或者说表结构不停变 加字段或者减字段 那就没必要用 mybatis
    micean
        30
    micean  
       2020-06-27 09:24:09 +08:00
    纯 sql 写多了还是喜欢 mybatis,idea 配置了数据库之后也不存在字段变更导致的 bug 忽视问题
    matthewxu123
        31
    matthewxu123  
       2020-06-27 09:31:07 +08:00 via Android
    @murmur 你不知道 jpa 或者 jdbcTemplate 都可以写进 properties?
    murmur
        32
    murmur  
       2020-06-27 11:54:29 +08:00
    @matthewxu123 你 properties 能换行么
    murmur
        33
    murmur  
       2020-06-27 11:56:32 +08:00
    @matthewxu123 斜杠和加号拼接一样,可以,但是视觉上不够优雅
    hantsy
        34
    hantsy  
       2020-06-27 12:50:09 +08:00
    首先,纠正一下。Java 不一定要编译才能运行。

    Java 已经可以直接运行***单个源文件***,某种程序上说,可以将 Java 当成 Script 来用了,现在有一些 Infra as code 脚本工具也是支持 Java 的。

    https://www.infoq.com/articles/single-file-execution-java11/
    hantsy
        35
    hantsy  
       2020-06-27 12:52:56 +08:00
    @yannxia JPA 本来就支持 Native Query,什么叫不如写 SQL ???
    Sendya
        36
    Sendya  
       2020-06-27 12:52:56 +08:00 via Android
    我前单位,数字货币项目,并发非常高,用的还是 spirng data jpa 依旧很稳,技术栈 要全公司开发大部分愿意才好选择
    oneisall8955
        37
    oneisall8955  
       2020-06-27 12:53:37 +08:00 via Android
    置顶好骚啊
    hantsy
        38
    hantsy  
       2020-06-27 13:09:48 +08:00
    @Sendya 任何技术使用好坏都是和人有关。还有任何技术都是为了解决某方面的问题,而不是全能王。

    从程序设计上讲,JPA 解决了 OOP 和 Data Modeling 不匹配的问题,使用 JPA 能够最大程序的发挥 OOP 语言的特性。而不是困在 RDBMS 的泥潭了。

    对于使用 JPA 有问题的人,只是有一点 SQL 基础,完全不懂 OOP 抽象,也不愿意学习 JPA 那一套 API 而已。以前帮朋友面试过一些 Java 候选者,有个 Java 5,6 年的说 Hibernate,MyBatis 对比说得头头是道,说自己大量的实战经验证明 Hibernate 不行。结果问了一个基础中的基础问题,我们提到维护 Hibernate Session(对应 Hibernate 一级缓存)的里的对象状态有几状态,怎么维护(和变迁的),他脑子好像空白,根本就不知道这 Session 是什么东西。

    总有一些人无端的报怨 JPA 不方便,性能, 什么的,说白了自己的问题,绝大部分这些人都没有系统的学习过 JPA 。

    JPA 如果你没有能力掌握,你说你的 MyBatis 写的代码性能比 JPA 好,不是笑话吗?
    hantsy
        39
    hantsy  
       2020-06-27 13:28:08 +08:00
    @sagaxu 没错。

    我从来没有遇到在国外项目看到有人使用过 Batis,MyBatis 。Spring JdbcTemplate 配合 Java 8 语法还不错,写起来与 Helidon DbClient 差不多。

    再说回来,老外的项目,我遇到他们死磕要全部代码 Typesafe,不允许用字符的查询语句,他们推荐一些复杂查询用 JOOQ,后来我还用 Criteria API 完成了。
    fxjson
        40
    fxjson  
    OP
       2020-06-27 13:37:32 +08:00
    @hantsy jdbctemplate 应该需要封装基本单表的 curd 啊,不然代码到处是 sql
    hantsy
        41
    hantsy  
       2020-06-27 13:43:28 +08:00
    @fxjson 你可以看看 Spring Data Jdbc,定义一套 Annotations 完成 OR Mapping 。目前感觉 R2dbc (和 Spring Data R2dbc ) 不错,API 比较友好,可是与 Spring Data Jdbc 还有点差距,1 。0 还不支持 projection.

    现在的 API 操作都是慢慢支持 ReactiveStreams 了,更新换代太快了。
    hantsy
        42
    hantsy  
       2020-06-27 15:55:41 +08:00
    @dcalsky 尽可以回避写 HQL,JPQL 字符查询,使用 Typesafe 方式的确可以减少很多低级 Typo 错误,特别开发期间更新频繁的时候。

    EntityGraph 估计这里写 Java 的,只有极少人用过。https://github.com/hantsy/ee7-sandbox/wiki/jpa-entitygraph
    xiaogui
        43
    xiaogui  
       2020-06-27 17:01:37 +08:00
    jpa 就差不多,除非说是特复杂的 sql 用 query
    Uyuhz
        44
    Uyuhz  
       2020-06-27 17:45:33 +08:00 via Android
    新接手的老项目,几百行的 sql,还手动拼接全写在业务代码里,看着纯粹恶心人,这时候我就会特怀念 xml 了
    ONCEsama
        45
    ONCEsama  
       2020-06-27 18:43:58 +08:00
    JPA 是一种规范,Hibernate 是一种实现,目前互联网的两大 ORM 框架就是 Hibernate 和 MyBatis 了,而且 MyBatis 的写法不只有 xml,还可以通过注解来实现的,只是因为 xml 的写法比较清晰,需要修改的时候会方便很多。
    hekaihao2015
        46
    hekaihao2015  
       2020-06-27 21:50:35 +08:00
    @ONCEsama MyBatis 企业开发还是用 xml 比较好,xml 可以直接看 sql 语句,注解的话还得去代码里查这个方法的语句
    yannxia
        47
    yannxia  
       2020-06-27 22:02:50 +08:00
    @hantsy 早期 JDK 不支持多行 SQL,写 native 很恶心,不如直接 mybatis 写 xml 里面。复杂查询的 hql 也不是很好用。 总之连接数据库的操作都不太爽。
    hantsy
        48
    hantsy  
       2020-06-27 22:50:27 +08:00
    @yannxia 遇到的一些项目,不允许用任何字符 XQL,客户强制要求。开始很不习惯,现在我也觉得很有道理,可以有效避免一些运行时低级拼写错误。全部 Typesafe 后,借助 IDE 代码辅助,IDE 检测范围大得多,很多查询相关的错误在编译前就解决了。

    XML 配置就不说,远古时代的。
    yannxia
        50
    yannxia  
       2020-06-27 23:06:50 +08:00
    @hantsy 以前我也这么用,JOOQ 之类的也是如此,但是有一些很麻烦的点,比如经常需要判断 null,然后确定是不是要进行增加查询条件,这一部分代码我认为是对代码逻辑的污染,就有点像注解太多对代码的理解产生了干扰,不如把这一些东西都扔到 XML 里面,在业务层只是增加 @notnull @nullable 来确定是否可以为空给调用者警示即可。

    另外,HQL 生成的 SQL 非常的啰嗦,复杂查询并不是很友好,尤其是需要 DBA 帮助优化 SQL 的时候还需要 DBA 先简化。JOOQ 这点做的就挺好,所见所得。
    sagaxu
        51
    sagaxu  
       2020-06-28 00:05:11 +08:00 via Android
    @yannxia 把查询剥离出来,统统扔到 xx.xml 里,和扔 xx.java 里,有什么不同吗? xml 的表达能力很弱,非常不适合做 dsl,
    cheng6563
        52
    cheng6563  
       2020-06-28 00:25:12 +08:00 via Android
    @sagaxu 但是 Java 连多行字符串都不支持,写 Java 里更难受啊。
    GPLer
        53
    GPLer  
       2020-06-28 08:28:06 +08:00
    @cheng6563 JDK 13 支持了 Text Blocks 。
    hantsy
        54
    hantsy  
       2020-06-28 09:24:18 +08:00   ❤️ 1
    @sagaxu 老外的一个观点,放 XML 里面开发的时候很难维护,效率太低。比如,Mybatis 之类的,一个 TableName 写错了,dog->doge,或者哪里重新命名改动,另外几处忘记改了,IDE 几乎没有什么提示,要运行时才报错误。但是 JPA,用 TypeSafe 方式 ,用 MetaModel Classes 时候就完全不一样,任何属性重新命名,立即会影响到 Meta Classes,IDE 会立即提示有问题,不必等到运行时检测。

    XML 配置和写 SQL 的回忆, 对于我来讲,我觉得恶梦一般。有段时间连 XML 解析技术都是讨论的问题,比如 DOM 解析,还是逐个节点解析。
    Hibernate 支持 Annotations 就立即丢掉了 XML 。
    JPA 中我从来没用过 XML 配置。
    Spring 从 3 。0 开始一部分用 Annotations,到了 3 。2 后几乎再没有用过 XML (除了一些没办法基础的启动配置)。
    hantsy
        55
    hantsy  
       2020-06-28 09:37:40 +08:00
    我也不知道 SQL 写在 Java 里面和 XML 有什么差别。

    试用过 Helidon 的 DbClient,把 SQL 写在 Java 里面,写这个版本花的时间比 JPA 长的多,感觉回到解放前,太难受。

    https://github.com/hantsy/helidon-sample/blob/master/se-dbclient/src/main/java/demo/PostRepository.java
    yannxia
        56
    yannxia  
       2020-06-28 09:43:14 +08:00
    @sagaxu 单纯说的 SQL 语句,这个 XML 表达能力 和 JAVA 差不多平级,SQL 本身就是一串文本,不需要什么类型之类的东西。 对于我来说,我觉得放在 Java 里面本身就是一种污染,因为那部分我的逻辑我认为归属于 SQL 的范畴,不是 Java 所编写的业务系统的范畴,我更倾向于把 SQL 查询作为一个黑盒看待。
    yannxia
        57
    yannxia  
       2020-06-28 09:45:02 +08:00
    @hantsy 上帝归上帝,凯撒归凯撒。SQL 归 XML 管,代码逻辑归 JAVA 管,认可这个才有后面用 Mybatis 的共识。
    jimrok
        58
    jimrok  
       2020-06-28 10:05:32 +08:00
    能用 jpa 就不要用 Mybatis,Mybatis 这种设计有时代局限性,最早的应用都是单数据库应用,跨表查询比较常见。随着规模扩大,很多应用都是多数据库的系统,并带有 nosql 的数据库加入,不需要做复杂的 join 。而且 Mybatis 这种分离业务逻辑代码和 sql 代码的配置方式可读性并不好,你需要 xml 文件和 java 跳跃的看才能把逻辑看明白。
    hantsy
        59
    hantsy  
       2020-06-28 10:12:06 +08:00
    @jimrok

    NoSQL 才是搅局者。

    现在我有的项目完全不用 RDBMS,有的混用 NoSQL 和 RDBMS 。
    lancelock
        60
    lancelock  
       2020-06-28 10:56:25 +08:00
    @hantsy 现在 NoSQL 一般用什么数据库啊?
    liuzhen
        61
    liuzhen  
       2020-06-28 11:13:57 +08:00
    jpa 最好,受不了 Mybatis 的那一堆复杂 sql,有些人自认为自己 sql 编写能力强,什么业务都喜欢一条长 sql 搞定,上百行的 sql 后面维护者看着想死
    fxjson
        62
    fxjson  
    OP
       2020-06-28 12:12:53 +08:00
    @liuzhen 那关联查询怎么拆分,或者要根据外键查询另一个表的数据,要拆分表查询?
    liuzhen
        63
    liuzhen  
       2020-06-28 12:21:47 +08:00
    @fxjson jpa 可以 join 多表啊子查询都可以,可以返回多表字段为一个 map,返回自定义 DTO 不是太方便
    liuzhen
        64
    liuzhen  
       2020-06-28 12:22:51 +08:00
    @fxjson 一般的表设计字段时候适量冗余吧,尽量避免多表
    hantsy
        65
    hantsy  
       2020-06-28 12:52:22 +08:00
    @lancelock 看场景吧。

    NOSQL 有几大派系,Document,KeyValue,Graph,Column 。

    Mongo 是比较通用的 Doucment 典型代表,可能也是应用最广泛的 NoSQL 。API 也比较友好 ,不管是 Java 语言,还是 JavaScript 。

    我项目第一次引入 NoSQL 是用 Mongo 的 Gridfs,用来存储上传文件。后来有些小项目,直接全部用 Mongo 了。

    Redis 可以用在一些临时存储,比经常遇到的什么验证码之类,用 Redis,设置一个时间点,过期自动删除,删除的工作不用代码实现。或者 Key Value 场景,特别是一些统计,比如一些页面浏览器,(可以用消息传递),Redis 存储,提供 API 显示(只读)。另外,Redis 本身也可以用做消息 Message Broker,轻量级的。

    关系型模型最牛逼的还是 Neo4j 这种 Graph 数据库,不过它的查询语言又是一门新语言了。这实际就是数据结构 Graph 的实现,用于查询路径的场景太容易。如,对应 SocialNetwork 中两个人关系深度,a->b->c->d, 查询 a->d 的关系深度( LInkedIn,脉脉都有这样的场景,至于它们怎么实现就不知道)。另外,比如,常见的物流路线跟踪之类,非常实用。
    hantsy
        66
    hantsy  
       2020-06-28 13:15:24 +08:00
    @fxjson 再说说查询。在 V 站,我常常看到说查询复杂离不开 SQL,所以要用 MyBatis 这种 SB 一样的工具。
    现在整个 V 站一些讨论,一看到什么复杂查询,很多人很扯蛋的就一竿子捅到数据库( RDBMS )和 SQL 。实话说,MySQL 这种数据库,一个表中数据量稍一大了,查询性能就会断崖式的下降。

    好几年前,我做过一个海外项目,用到多个数据库,大部分的代码都是 JPA 和 Postgres,初期开发完全不考虑复杂查询,所以大部分都是单个 Entity,甚至很少用 HQL 和自定义查询语言( Criteria ),大部分都是可以用 Spring Data JPA 的约定解决。

    那么总有人说,如果遇到怎么样怎么样的场景,比如要搜索产品库,牵扯到其他的情况怎么办?

    互联网应用,页面 80%情况都是用一个输入框关键字搜索。所以所有的全文搜索(包含一些条件)场景,最后都是聚合到 Elastic Search 中(事先通过 Message Broker,Schedule ),建立索引。要知道在 ES 这里一样,同样没有联合查询,所有用到的数据都有一个 Aggregate Root,关联数据全部在一个 Document 里面。查询效率比 SQL 联表不知道高出多少倍,数据量到百万还可以做 MS 级查询。

    另外,对于 RDBMS 系统查询,为了提高效率,生产环境 JPA 开启二级缓存,比如用高性能的 Hazecast,实际项目其他很多场景都大量使用 Hazecast Spring,提高性能。

    真正,我经历的一些好的项目的系统架构设计,查询基本上跟数据库边都沾不上,大部分情况数据都是来源于缓存服务器或者 ES 这种服务器。
    hantsy
        67
    hantsy  
       2020-06-28 13:18:16 +08:00
    @liuzhen 很多人可能从来没有这个特性。

    select new com.example.SampleDto(user.name, user.age) from User user

    map 好像是 Hibernate 特有的,不是标准。
    hantsy
        68
    hantsy  
       2020-06-28 13:30:27 +08:00
    对于互联网数据这个处理,我想到三国那句话。天下大势,合久必分,分久必合。开发的时候尽可以业务细化,分而治之,化繁为简。产品上线根据需求,将一些数据聚合呈现。
    chaos3
        69
    chaos3  
       2020-06-28 16:00:13 +08:00
    这些不都是模版模式调用 数据库吗。就好像微信支付和支付宝支付哪个能更简单买东西的问题一样。看项目的喜好和选择吧。本质没啥不一样啊。
    mysunshinedreams
        70
    mysunshinedreams  
       2020-06-28 17:09:32 +08:00
    @felixin JOOQ 前期配置有点啰嗦。
    Saurichthys
        71
    Saurichthys  
       2020-06-28 17:14:09 +08:00
    用 nutz 项目上 95%可以不用 sql,5%复杂语句,可以考虑用视图或者是自定义 sql 语句
    limuyan44
        72
    limuyan44  
       2020-06-29 00:17:13 +08:00 via Android
    楼里谈论这么多其实没啥用,在中国,肯定是 mybatis 用的最多的。至于为什么选 mybatis,也许是这些人不混 v 站。
    Alex5467
        73
    Alex5467  
       2020-06-29 09:27:31 +08:00
    使用 SpringBoot 你完全可以不用 xml 写 sql,用注解就可以搞定。
    Alex5467
        74
    Alex5467  
       2020-06-29 09:29:26 +08:00
    实际项目中用什么取决于项目复杂度吧,用 jpa 能解决复杂的关联查询吗。
    Alex5467
        75
    Alex5467  
       2020-06-29 09:31:26 +08:00
    @wjup 看国外网站统计的也有一部分人用 JdbcTemplate,mybatis 只占 20%,jpa 占大多数,很好奇复杂的 sql 他们怎么写的
    Alex5467
        76
    Alex5467  
       2020-06-29 09:35:03 +08:00
    @Sendya 是的,看团队的,团队大部分人都用的,自己一个人用无所谓,随便折腾
    fxjson
        77
    fxjson  
    OP
       2020-06-29 12:00:05 +08:00
    @Alex5467 我也好奇
    wjup
        78
    wjup  
       2020-06-29 12:19:19 +08:00 via Android
    @Alex5467 jdbcTemplate 有个不好的地方,返回 Map 对象时,如果查询数据为空就会报错😂😂
    ltfree
        79
    ltfree  
       2020-06-29 15:05:58 +08:00
    mybatis xml 70% 80%公司都是这么干的,习惯就好了
    liuzhen
        80
    liuzhen  
       2020-06-30 14:03:43 +08:00
    @hantsy 谢谢,之前找过 jpa 怎么返回自定义 DTO 的方式,没找到能用的方法
    hantsy
        81
    hantsy  
       2020-06-30 14:22:02 +08:00
    @liuzhen 另:Spring Data 简单的直接映射(属性名一致,取字段子集)可以在 Repository 中返回 Dto 就可以了。

    interface UserRepostiory<>{
    UserDto findByUsername()
    }
    CantSee
        82
    CantSee  
       2020-06-30 15:41:20 +08:00
    我觉得 mybatis 比较灵活,jpa 也还可以,但是复杂的查询会看来很难受,写 sql 比较清晰
    halk
        83
    halk  
       2020-06-30 18:26:31 +08:00
    ```java
    User user = mapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getId, 10086));
    ```

    打算把项目里的 tk mapper 全部换成 mybatis-plus,也比 jpa 好用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   958 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 21:46 · PVG 05:46 · LAX 14:46 · JFK 17:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.