0
点赞
收藏
分享

微信扫一扫

mybatis 开发一些小知识

Android开发指南 2022-04-13 阅读 70
mysql

使用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 条评论