mybatis映射文件相关问题

一、mybatis映射文件调用Oracle存储过程问题

如果结果集是放在一个游标里,dao层在传参数时要多一个游标的值,其值为返回的结果集的类型,比如:

public Parameters<String,Object> getData(ParaBean paraBean){
  Map<String,Object> paraMap = new HashMap<String,Object>();
  paraMap.put("para1",paraBean.getPara1);
  paraMap.put("para2",paraBean.getPara2);
  paraMap.put("cur_out",new ArrayList<ParaBean>());
  getSqlSession().selectList(sqlmapNamespace+".getData",paraMap);
  return paraMap.get("cur_out");
}

而mapper.xml文件中:

...
<mapper namespace="该mapper文件的路径">
  <resultMap id="getResult" type="ParaBean的包名">
     <result property="ParaBean中的属性名" colume="查询结果的字段名"/>
      ....
  </resultMap>
  <select id="getData" parameterType="map" statementType="CALLABLE">
    <![CDATA[
            {CALL 存储过程名(
                #{para1,jdbcType=VARCHAR,javaType=String,mod=IN},
                #{para2,jdbcType=VARCHAR,javaType=String,mod=IN},
                #{cur_out,jdbcType=CURSOR,resultMap="该mapper文件的路径+getResult",mod=OUT}
            )}
    ]]>

  </select>
</mapper>

注意:这时select语句的返回类型应该用属性:statementType="CALLABLE",而不是resultMap=“getResult”

二、Mybatis获取insert方法插入记录的自增长ID

在Mybatis Mapper文件中添加属性“useGeneratedKeys=true”和“keyProperty=id”,其中keyProperty是Java对象的属性名,而不是数据表的字段名。然后就可以通过新增对象的get方法得到id的值。

三、MybatisjavaTypejdbcType对应关系问题

mybatis的映射数据库里数据类型为bigint对应java中的long

所有的对应关系:

JDBC TypeJava Type
CHARString
VARCHARString
LONGVARCHARString
NUMERICjava.math.BigDecimal
DECIMALjava.math.BigDecimal
BITboolean
BOOLEANboolean
TINYINTbyte
SMALLINTshort
INTEGERint
BIGINTlong
REALfloat
FLOATdouble
DOUBLEdouble
BINARYbyte[]
VARBINARYbyte[]
LONGVARBINARYbyte[]
DATEjava.sql.Date
TIMEjava.sql.Time
TIMESTAMPjava.sql.Timestamp
CLOBClob
BLOBBlob
ARRAYArray
DISTINCTmapping of underlying type
STRUCTStruct
REFRef
DATALINKjava.net.URL[color=red][/color]

 

四、传参数时#{}和${}的区别

 

转载于:https://my.oschina.net/zerzer/blog/727806

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值