方法一在效率上貌似有优势,但写 resultMap 和语句真是不开心
方法二对程序员比较友好,但效率不如方法一,而且 service 层会比较臃肿
不知道大家的项目中都是如何使用的
PS:临时从 Android 调到 Web 这边帮忙, web 技术并不精通,还请大家多多指教
1
zts1993 2015-10-26 20:28:50 +08:00
不知道。。。我感觉看心情。简单的可以关联一下。。数据量大,感觉就不能这么玩了。。
|
2
zkaip 2015-10-26 22:01:28 +08:00
我是主要在 service 层写逻辑, dao 层只简单的做一些关联查询
|
3
Lpl 2015-10-27 08:54:39 +08:00 via Android 1
一般在实际开发中我们都使用的是方法一,因为这样子比较适合多人开发吧。而且基本的增删改查可以使用 mybatis 的 xml 文件自动生成的。
resultmap 有个好处是需要什么数据就拿什么数据,不怎么需要 vo 层了。 |
4
loshine1992 OP @Lpl 感谢,知道咋弄拉
|
5
loshine1992 OP @Lpl 还有一个问题请教一下噢,比如我现在存在以下对应关系
* 班级 一对多 学生 * 学生 一对多 科目 * 科目 一对一 老师 那么我需要在查询班级的时候直接把 班级对应学生 学生对应科目 科目对应老师 的**resultMap**都写好然后再写好查询`SQL`语句么 那如果有很复杂的对应关系的时候会不会比较麻烦额。。 |
6
domty 2015-10-27 09:49:40 +08:00 1
单表的查询都是用 mybatis generator 生成 xml,bean 之类的代码,虽然用起来比较啰嗦但是还是还是挺好用的.
多表查询就得自写 xml 的 sql 了以及自设的结果集了,关联查询用 join 感觉还是挺方便的. |
7
thinkmore 2015-10-27 09:54:46 +08:00
多对多好麻烦。如果需要这种直接关联查询出来之后,然后在组装到对应的实体类中去不就行了,当然这里组装麻烦了一点点吧。
数据量小的情况下还是建议多对多的 |
8
loshine1992 OP @domty 感谢回答,目前我采取的也是这种方式😄
|
9
loshine1992 OP @thinkmore 确实,我也觉得这种情况下写 SQL 还是比较麻烦的。。
|
10
codeyung 2015-10-27 10:47:41 +08:00 1
一般都多表 join 返回对象 数据库没有做关联 - - 都是单表自己写 sql
|
11
PandaFack 2015-10-27 14:41:45 +08:00 1
一般都多表 join 返回对象 数据库没有做关联 - - 都是单表自己写 sql + 1
|
12
Lpl 2015-10-27 19:51:13 +08:00 via Android 1
@loshine1992 按照我们是这样子做的,把三张表写 sql 语句,使用 left join 取出来一些你需要的列放在 resultmap 中
|
13
Lpl 2015-10-27 19:52:03 +08:00 via Android
left join 类似的有坑...我记得当时踩过,然后忘了,就是在一对多的时候出现的
|
14
loshine1992 OP @Lpl 感谢回复,其实已经使用这种方式了,就是不太喜欢这种机械式的劳作。。。。
|
15
Lpl 2015-10-27 20:05:36 +08:00 via Android
@loshine1992 但是这种是比较好的方式。有一点,你们是不是在数据库中显式定义 foreign key 了?这样子不好
|
16
loshine1992 OP @Lpl 没有显式定义外键的,这个在项目启动的时候我就和后端的负责人建议过。
目前其实有一个比较糟糕的情况,因为后端的负责人之前不太了解 Spring MVC 和 Mybatis 所以现在的代码是比较不规范的 比如 Controller 层中大量使用了 request.addAttribute(key,value) 而非 modelMap.put(key, value),返回 json 也是直接操作的 response 最为麻烦的其实是。。他手写了 dao 层的实现而没有使用 Spring 扫描 Mybatis 的代理实现方式。。。。。。。 |
17
Lpl 2015-10-28 09:03:48 +08:00 via Android
@loshine1992 你们后端负责人为什么不听建议...
|