MyBatis,求正确使用姿势?

2015-07-06 23:57:55 +08:00
 phx13ye
有很多非常类似的SQL,应该怎么抽象处理,每一句都要自己写吗?
比如selectByXXX, deleteByXXX

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

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

你们有没有DRY一点的方式解决?
nino789pzw
2015-07-07 01:01:40 +08:00
inherit from a common dao, and put the parameter in a map?
phx13ye
2015-07-07 01:16:45 +08:00
@nino789pzw 但是对于不同表的比如说删除语句,不是还需要自己写吗?你这只是解决了少写接口方法的问题吧,每个命名空间下,对应该方法不是还要写sql吗?
如果我的数据库大概有30多张表,
nino789pzw
2015-07-07 01:26:54 +08:00
@phx13ye 将hashmap作为参数传入 在命名空间里面loop hashmap的key/value append到SQL
phx13ye
2015-07-07 01:51:00 +08:00
@nino789pzw 额,请问怎么具体怎么做?
假如我需要这样一个语句WHERE key = value, ognl表达式不熟
nino789pzw
2015-07-07 01:59:10 +08:00
which version of myBatis r u using?
If I remember it correctly..it should have <foreach>
nino789pzw
2015-07-07 01:59:24 +08:00
linnchord
2015-07-07 08:11:09 +08:00
thinkmore
2015-07-07 09:50:57 +08:00
generator自动生成
vivisidea
2015-07-07 09:52:11 +08:00
有很多非常类似的SQL,应该怎么抽象处理,每一句都要自己写吗?
比如selectByXXX, deleteByXXX

--
我们项目是用 freemarker 自己写模板文件生成的代码
顺便还能把基本的dao和service文件(基本的CRUD,其他业务逻辑当然要手写了)也一并生成了
cnhongwei
2015-07-07 14:16:02 +08:00
mybatis 我认为有些麻烦,不过orm也没有太爽。现在使用spring data jpa好一点。不知道Query DSL如果,看样子还可以。但感觉java中,大部分的框架,都要写个bean和column的对应实在不爽,没有办法自己推断吗?不知道其它的语言怎么样。现在有点想学习一下scala 的 slick, 不知道会不会好一些。
phx13ye
2015-07-07 14:44:42 +08:00
@cnhongwei jpa定义多了manytoone 和 manytomany 会关联太多查询,控制不好容易有N+1问题。
不过小项目用确实爽,那些repo接口强行很规范
lidiya
2015-07-09 15:50:24 +08:00
Java Web进阶-Mybatis视频资料 http://www.maiziedu.com/course/java/357-4370/
dongfangshangren
2015-07-10 22:51:14 +08:00
基础SQL比较多可以用mybatis generator,有类似的sql可以使用sql标签重用,或者有一几乎一样的sql只是参数不同可以用动态sql,mybatis自带缓存不太喜欢用,用springcache、aop等其它方式更简单灵活

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX