锁定老帖子 主题:初用Ibatis的一些疑惑
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-22
正在学习myibaits 感觉比以前的使用方便了很多
|
|
返回顶楼 | |
发表时间:2011-11-22
用实体映射吧。
|
|
返回顶楼 | |
发表时间:2011-11-22
<resultMap>元素不是必须的,在很多情况下你可以不使用或者使用resultClass代替,但并不是表示<resultMap>元素是多余的,个人认为<resultMap>元素一般是用来定义对象和数据库表之间的影射关系(字段同属性之间的影射关系),在字段名和对象属性名称不一致的情况下返回对象类型使用<resultMap>会很方便,当然通过<resultMap>元素同时指定了属性javaType,方便数据转换,应该可以提升性能
|
|
返回顶楼 | |
发表时间:2011-11-23
用了一年的ibatis,竟然都没认真思考resultMap和resultClass的优劣场合,罪过啊!
|
|
返回顶楼 | |
发表时间:2012-03-20
你用hashmap返回的话,要解开两层的hashMap
|
|
返回顶楼 | |
发表时间:2012-03-31
最后修改:2012-03-31
天下大同 写道
初用Ibatis有几点疑惑,欢迎指教。 在ibatis的配置文件中经常有这样的
<sqlMap namespace="xxx"> <typeAlias alias="xxx" type="xxxxxx" /> <resultMap id="xxxMap"> ........ </resultMap> </sqlMap > <select id="xx" resultMap= "xxxMap" parameterClass="java.util.HashMap"> select * from table </select>
如果是做单一查询,或者一对一的查询
<typeAlias alias="xxx" type="xxxxxx" /> <resultMap id="xxxMap"> ........ </resultMap>
这些映射完全是多余的啊
如果将查询改成<select resultClass="java.util.HashMap"></select>
这样返回的也是一个Map<String,Object>,用resultMap= "xxxMap" 也同样是一个map,这样的还要做一个<resultMap id="xxxMap">的映射 是不是又点多余。
当然这是在单表查询,和一对一查询的时候,而且查询结果很清晰的组装成了一个map,那么实体bean也可以不用了。在每次调用只需写 <select resultClass="java.util.HashMap" parameterClass="java.util.HashMap"> select 。。。。。 </select> 这样就可以解决所有的了。
如果实现一对多查询,这样<resultMap id="xxxMap">的映射还是有必要,但是我在问我同事的时候,他的解释是在用Ibatis的时候最好 不要再配置文件中关联,而是在java代码中实现表之间的关联。
<typeAlias alias="xxx" type="xxxxxx" /> <resultMap id="xxxMap"> ........ </resultMap>这样的配置是不是只有在一对多,或者多对多的时候才又用呢?
初用Ibatis 欢迎赐教。
如果你不是用 resultMap,请问你如何实现jdbc type转换成适当的 jdbc type?举个例子:oracle数据存储的是number,业务调用要是int型,请问你怎么做?当然你肯定会有个思路:我在dao层 根据key把这个值拿出来,然后按照要求转换。若到以后需求变了? 而且在dao层把list遍历然后根据key拿这个字段的值还有性能消耗。 建议你把《MyBatis-3-User-Guide》中关于resultMap部分过一下。 |
|
返回顶楼 | |
发表时间:2012-03-31
qq123zhz 写道
你用hashmap返回的话,要解开两层的hashMap
我觉得是就一层,是list中含有map
结果集对应的对象是一个list,list里面放的是hashmp,hashmap的 key是mappers文件中[select]与[from]之间声明的列名,value是列名对应的值 。 |
|
返回顶楼 | |
发表时间:2012-03-31
天下大同 写道
初用Ibatis有几点疑惑,欢迎指教。 在ibatis的配置文件中经常有这样的
<sqlMap namespace="xxx"> <typeAlias alias="xxx" type="xxxxxx" /> <resultMap id="xxxMap"> ........ </resultMap> </sqlMap > <select id="xx" resultMap= "xxxMap" parameterClass="java.util.HashMap"> select * from table </select>
如果是做单一查询,或者一对一的查询
<typeAlias alias="xxx" type="xxxxxx" /> <resultMap id="xxxMap"> ........ </resultMap>
这些映射完全是多余的啊
如果将查询改成<select resultClass="java.util.HashMap"></select>
这样返回的也是一个Map<String,Object>,用resultMap= "xxxMap" 也同样是一个map,这样的还要做一个<resultMap id="xxxMap">的映射 是不是又点多余。
当然这是在单表查询,和一对一查询的时候,而且查询结果很清晰的组装成了一个map,那么实体bean也可以不用了。在每次调用只需写 <select resultClass="java.util.HashMap" parameterClass="java.util.HashMap"> select 。。。。。 </select> 这样就可以解决所有的了。
如果实现一对多查询,这样<resultMap id="xxxMap">的映射还是有必要,但是我在问我同事的时候,他的解释是在用Ibatis的时候最好 不要再配置文件中关联,而是在java代码中实现表之间的关联。
<typeAlias alias="xxx" type="xxxxxx" /> <resultMap id="xxxMap"> ........ </resultMap>这样的配置是不是只有在一对多,或者多对多的时候才又用呢?
初用Ibatis 欢迎赐教。
|
|
返回顶楼 | |
发表时间:2012-04-01
resultMap我很少用,一般数据库和实体类字段对不上才用一下
|
|
返回顶楼 | |
发表时间:2012-09-12
Jacarri_Chan 写道
qq123zhz 写道
你用hashmap返回的话,要解开两层的hashMap
我觉得是就一层,是list中含有map
结果集对应的对象是一个list,list里面放的是hashmp,hashmap的 key是mappers文件中[select]与[from]之间声明的列名,value是列名对应的值 。 同意。实际中也经常这么用,遍历list得到map,以字段或其别名作为key取value |
|
返回顶楼 | |