MyBatis,求正确使用姿势? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
phx13ye
V2EX    Java

MyBatis,求正确使用姿势?

  •  
  •   phx13ye
    Alwayswithme Jul 6, 2015 5514 views
    This topic created in 3950 days ago, the information mentioned may be changed or developed.
    有很多非常类似的SQL,应该怎么抽象处理,每一句都要自己写吗?
    比如selectByXXX, deleteByXXX

    二级缓存问题,它是基于每个mapper的命名空间,假设有员工,公司。
    员工mapper中某一个select根据employee_id查询查员工,根据company_id嵌套查询其公司
    这个select被缓存后,
    然后在公司mapper中CUD一番,怎么让员工mapper中那个select清空缓存?

    我使用姿势不对?为什么你们都说mybatis好?
    14 replies    2015-07-10 22:51:14 +08:00
    phx13ye
        1
    phx13ye  
    OP
       Jul 7, 2015
    第一个问题主要想知道你们一般都怎么处理,感觉表多了不是得写疯啊?不想用网上那个通用mapper,它解决的主要还是单表问题,不可能POJO的属性或者说实例变量都是基本类型没有关联关系吧。

    你们有没有DRY一点的方式解决?
    nino789pzw
        2
    nino789pzw  
       Jul 7, 2015
    phx13ye
        3
    phx13ye  
    OP
       Jul 7, 2015 via Android
    @nino789pzw 但是对于不同表的比如说删除语句,不是还需要自己写吗?你这只是解决了少写接口方法的问题吧,每个命名空间下,对应该方法不是还要写sql吗?
    如果我的数据库大概有30多张表,
    nino789pzw
        4
    nino789pzw  
       Jul 7, 2015
    @phx13ye 将hashmap作为参数传入 在命名空间里面loop hashmap的key/value append到SQL
    phx13ye
        5
    phx13ye  
    OP
       Jul 7, 2015 via Android
    @nino789pzw 额,请问怎么具体怎么做?
    假如我需要这样一个语句WHERE key = value, ognl表达式不熟
    nino789pzw
        6
    nino789pzw  
       Jul 7, 2015
    which version of myBatis r u using?
    If I remember it correctly..it should have <foreach>
    linnchord
        8
    linnchord  
       Jul 7, 2015
    thinkmore
        9
    thinkmore  
       Jul 7, 2015
    generator自动生成
    vivisidea
        10
    vivisidea  
       Jul 7, 2015
    有很多非常类似的SQL,应该怎么抽象处理,每一句都要自己写吗?
    比如selectByXXX, deleteByXXX

    --
    我们项目是用 freemarker 自己写模板文件生成的代码
    顺便还能把基本的dao和service文件(基本的CRUD,其他业务逻辑当然要手写了)也一并生成了
    cnhongwei
        11
    cnhongwei  
       Jul 7, 2015
    mybatis 我认为有些麻烦,不过orm也没有太爽。现在使用spring data jpa好一点。不知道Query DSL如果,看样子还可以。但感觉java中,大部分的框架,都要写个bean和column的对应实在不爽,没有办法自己推断吗?不知道其它的语言怎么样。现在有点想学习一下scala 的 slick, 不知道会不会好一些。
    phx13ye
        12
    phx13ye  
    OP
       Jul 7, 2015
    @cnhongwei jpa定义多了manytoone 和 manytomany 会关联太多查询,控制不好容易有N+1问题。
    不过小项目用确实爽,那些repo接口强行很规范
    lidiya
        13
    lidiya  
       Jul 9, 2015
    Java Web进阶-Mybatis视频资料 http://www.maiziedu.com/course/java/357-4370/
    dongfangshangren
        14
    dongfangshangren  
       Jul 10, 2015
    基础SQL比较多可以用mybatis generator,有类似的sql可以使用sql标签重用,或者有一几乎一样的sql只是参数不同可以用动态sql,mybatis自带缓存不太喜欢用,用springcache、aop等其它方式更简单灵活
    About     Help     Advertise     Blog     API     FAQ     Solana     1245 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 17:37 PVG 01:37 LAX 10:37 JFK 13:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86