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的提示。 展开
<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的提示。 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询