Mybatis的结合oracle的2个困扰

第一问题是在oracle存储类型为char类型时,为什么在编辑mybatis对应的mapper.xml中这样写:<selectid="selectMsgById"para... 第一问题是在oracle存储类型为 char 类型时,为什么在编辑mybatis对应的mapper.xml中这样写:
<select id="selectMsgById" parameterType="String" resultType="msg">
select * from MTP_MSG_TAB where MSG_ID=#{msg_id}
</select>
然后在接口中传入一个java类型中的String类型的值afa,我在数据库有条字段也为afa
但是却无论如何返回null值,意思是没有满足where语句的等于条件。那么请问orcale中char类型的jdbcType难道不合java中String类型对应么。另外如果直接写语句:
<select id="selectMsgById" parameterType="String" resultType="msg">
select * from MTP_MSG_TAB where MSG_ID=‘afa'
</select>
这样子是可以查出来的。

第二个问题是用mybatis如何在orcale中调用procedure。
有人说 是这样定义xml:
<select id="proHello" statementType="CALLABLE">
<![CDATA[
{call pro_hello (#{p_user_name,mode=IN,jdbcType=VARCHAR},#{result,mode=OUT,jdbcType=VARCHAR})}
]]>
</select>
请问那个CDATA是干啥用的。也有人这样写:
<select id="getGroupNum" statementType="CALLABLE" parameterType="com.guorui.model.ParamSPC">
{call GYL_COMMON.GETGROUPNUM(
#{IN_PARAMETERID,jdbcType=VARCHAR,mode=IN},
#{IN_STEELID,jdbcType=VARCHAR,mode=IN},null,null,null,
#{OUT_GN,jdbcType=INTEGER,mode=OUT},
#{RST,jdbcType=CURSOR,mode=OUT,resultMap=BaseResultMap2,javaType=java.sql.ResultSet})}
</select>

很遗憾的是mybatis提供的dtd中并没有在#{}内的关于jdbcType的提示。
展开
 我来答
旗藻E
推荐于2016-03-03
知道答主
回答量:13
采纳率:0%
帮助的人:2.8万
展开全部
首先回答你的第一个问题 char存储的时候没达到指定长度空出部分已空格填充
第二个问题,直接使用{}包含就ok了。
程序员在思考
2012-08-06 · 知道合伙人互联网行家
程序员在思考
知道合伙人互联网行家
采纳数:347 获赞数:784
毕业于吉林大学计算机科学与技术学院,硕士学位。从事IT互联网工作12年,现任银行产品架构师、高级项目经理

向TA提问 私信TA
展开全部
建议你把mybatis转换后的sql语句打印出来看看吧,一看就知道了
追问
你知道怎么转换么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式