mybatis 开发一些小知识

使用mybatis 时候,发现result map 中 ,有一些异常,就是数据返回的时候无法得到正常的映射,是因为实体类当中没有写全要获取的get方法,导致返回错误

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘siId’ not found.

这个的原因是我没有加上注解,在我的mapper层加上注解即可

int insertPublicationDto(@Param(
            "record") SiEditPublicationDto record,@Param("siId")Long siId);

然后发现我的代码中没有映射,好办!在xml里面加上我的#{record.属性名}

**<insert id="insertPublicationDto" parameterType = "com.wile.simt.dto.SiEditPublicationDto" useGeneratedKeys="true">
   insert into t_si_publication
   <trim prefix="(" suffix=")" suffixOverrides=",">
     <if test="siId != null">
       si_id,
     </if>
     <if test="#{record.volume} != null">
       volume,
     </if>
     <if test="#{record.issue} != null">
       issue,
     </if>
     <if test="#{record.issuePublicationLink} != null">
       issue_publication_link,
     </if>
     <if test="#{record.actualPublicationDate} != null">
       actual_publication_date,
     </if>
     <if test="#{record.numberOfOOArticle} != null">
       number_of_oo_article,
     </if>
     <if test="#{record.numberOfOAArticle} != null">
       number_of_oa_article,
     </if>
   </trim>
   <trim prefix="values (" suffix=")" suffixOverrides=",">
     <if test="siId != null">
       #{siId,jdbcType=BIGINT},
     </if>
     <if test="#{record.volume} != null">
       #{record.volume,jdbcType=VARCHAR},
     </if>
     <if test="#{record.issue} != null">
       #{record.issue,jdbcType=VARCHAR},
     </if>
     <if test="#{record.issuePublicationLink} != null">
       #{record.issuePublicationLink,jdbcType=VARCHAR},
     </if>
     <if test="#{record.actualPublicationDate} != null">
       #{record.actualPublicationDate,jdbcType=TIMESTAMP},
     </if>
     <if test="#{record.numberOfOOArticle} != null">
       #{record.numberOfOOArticle,jdbcType=BIGINT},
     </if>
     <if test="#{record.numberOfOAArticle} != null">
       #{record.numberOfOAArticle,jdbcType=BIGINT},
     </if>
   </trim>
 </insert>**

ok,搞定,edit successfully ,但是又有问题了,如果之前有一个呢,那我再更改不就错误了,
这时看看user story 看看是什么情况捏

1 unsupported conversion from long to java.sql.Timestamp
**检查一下实体类是否有无参构造方法!!!!!!!,导致mybatis 无法new 这个实体类,也就无法通过set 来做映射
**

Insert into t_si_previous_handling_ce (si_id,user_id)
select 22000031,1827
from DUAL
where not exists(select si_id,user_id from t_si_previous_handling_ce
where si_id=22000031 and user_id=1827);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值