论坛首页 Java企业应用论坛

ibatis的sqlMap和实体bean的比较。

浏览 8213 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-03  
神之小丑 写道
我们也一直在用ibatis,也一直都喜欢直接用 hashmap做 输入/输出的类型,

可是那天就遇到个问题:

我输入的查询条件,有String  有int 怎么用map传进去了,

后来没办法,只能用javabean 封装传进去了,,,(有其他办法)?


我目前没遇到这样的问题
sqlMap的编写需要一个parameterClass="map" 你map里存储的数据类型需要和数据库字段类型一样。
varchar -- String 等。
在匹配的时候,不会出错吧。

如果是存储过程的话,自己写一个
<parameterMap class="java.util.HashMap" id="PRC_CENTER_CAHM_JJ_MXZ_Map">
<parameter property="v_FRCode" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>
0 请登录后投票
   发表时间:2011-11-03  
ibatis这类完全封装的框架不能进行深度控制的,已经被封装过度的!不知mybatis有没有给用户的接口或拦截。
其实用ibatis类框架的用户,主要是sql的动态生成,以及对象的映射,其实完全可以用模板语言来实现,如果需要对象自动映射,可以借鉴ibatis里的typehandler,用apache的beanutils来实现。而且可以实现jdbc的深度控制。
0 请登录后投票
   发表时间:2011-11-03  
yeqing4562011 写道
神之小丑 写道
我们也一直在用ibatis,也一直都喜欢直接用 hashmap做 输入/输出的类型,

可是那天就遇到个问题:

我输入的查询条件,有String  有int 怎么用map传进去了,

后来没办法,只能用javabean 封装传进去了,,,(有其他办法)?


我目前没遇到这样的问题
sqlMap的编写需要一个parameterClass="map" 你map里存储的数据类型需要和数据库字段类型一样。
varchar -- String 等。
在匹配的时候,不会出错吧。

如果是存储过程的话,自己写一个
<parameterMap class="java.util.HashMap" id="PRC_CENTER_CAHM_JJ_MXZ_Map">
<parameter property="v_FRCode" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>


ibatis有个typehandler,可以进行参数的转换的。
不可,现在没有用ibatis了,但从ibatis处也学了不了东西。:)
0 请登录后投票
   发表时间:2011-11-03  
yn5411 写道
yeqing4562011 写道
神之小丑 写道
我们也一直在用ibatis,也一直都喜欢直接用 hashmap做 输入/输出的类型,

可是那天就遇到个问题:

我输入的查询条件,有String  有int 怎么用map传进去了,

后来没办法,只能用javabean 封装传进去了,,,(有其他办法)?


我目前没遇到这样的问题
sqlMap的编写需要一个parameterClass="map" 你map里存储的数据类型需要和数据库字段类型一样。
varchar -- String 等。
在匹配的时候,不会出错吧。

如果是存储过程的话,自己写一个
<parameterMap class="java.util.HashMap" id="PRC_CENTER_CAHM_JJ_MXZ_Map">
<parameter property="v_FRCode" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>


ibatis有个typehandler,可以进行参数的转换的。
不可,现在没有用ibatis了,但从ibatis处也学了不了东西。:)


对是有一个typehandler
这个都可以在文档中查得到。
现在没有人用ibatis,夸张了吧。
0 请登录后投票
   发表时间:2011-11-03  
yn5411 写道
ibatis这类完全封装的框架不能进行深度控制的,已经被封装过度的!不知mybatis有没有给用户的接口或拦截。
其实用ibatis类框架的用户,主要是sql的动态生成,以及对象的映射,其实完全可以用模板语言来实现,如果需要对象自动映射,可以借鉴ibatis里的typehandler,用apache的beanutils来实现。而且可以实现jdbc的深度控制。


恩 受教了。
0 请登录后投票
   发表时间:2011-11-03  
javabean里是可以包含与持久化无关的领域逻缉的。这就是所谓的贫血模型。会导致更清晰的代码、更好的复用。

map不能这样做。
0 请登录后投票
   发表时间:2011-11-03  
gdpglc 写道
javabean里是可以包含与持久化无关的领域逻缉的。这就是所谓的贫血模型。会导致更清晰的代码、更好的复用。

map不能这样做。

不是太理解,贫血模型在书商看到过。  我回头看看,受教了
0 请登录后投票
   发表时间:2011-11-03  
Map param = new HashMap(); param put进去了。或者用list 迭代循环。
0 请登录后投票
   发表时间:2011-11-03  
先理解,实体与值的区别吧。

实体主要是参与逻辑的,而值主要是参与运算和展示的。这是两个独立的概念。

原本实体的出现就是为了封装值(数据)来展示更高层次的逻辑,现在把实体去掉还原成一个个的值,这是把层次降下来,可以理解为把原来逻辑分割成一个个小逻辑或者小运算。

犹如象数问题,各自都可达到目的,只是手段方式不同,当然获得的好处也不同。
0 请登录后投票
   发表时间:2011-11-03  
yeqing4562011 写道
KimHo 写道
光考虑功能实现,甚至会发现mvc都是“多余”的
为啥要搞模型,搞分层
为了后期维护和扩展


你这是偏激了,谁说不考虑扩展功能了和维护,看清楚OK?!。
难道我使用sqlMap后,扩展功能就做不了了

如果项目始终只有你一个人做那当然无所谓,如果是多个人就没你想的那么简单了,特别是后期维护
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics