后端开发写Mapper(SQL)遇到的问题


背景

近期做了一个前后端开发,在自己联调的过程中发现了自己容易犯错的地方,大部分是写的SQL不对导致的,不过最终都很快解决了,不过也反映出自己在SQL开发时虽然知识有了但缺乏熟练度。写一个博客记录一下自己犯的错。

错误内容

SQL中批量操作 in
int batchSwitchTenantNodeInfo(@Param("po") List tenantNodeRefs, @Param("abSuffix") String abSuffix ,@Param("nodeId") String nodeId, @Param("operator") String operator);

    
        update tenant_node_ref
            set ab_suffix = #{abSuffix,jdbcType=VARCHAR},
            update_time = now(),
            update_user = #{operator,jdbcType=VARCHAR}
        where is_delete = 0
          and node_id = #{nodeId,jdbcType=VARCHAR}
          and tenant_id in
        (
        
            #{item.tenantId, jdbcType=VARCHAR}
        
        )
    

这里不熟悉的地方就是对于in的使用,纯手写会忘记一些东西。

SQL中的映射关系
List findPageList(@Param("page") Page var1, @Param("po") T var2);


    

这里有几个需要注意的点,也是我很容易犯错的点:
1、查询的字段是所有的字段,但是实体类定义的时候自身只包含了部分字段,其余的字段是通过继承公共类来补充的,这个时候返回值类型就不能直接使用实体类接收,否则会继承的字段就映射不到,需要使用resultMap手动的进行绑定;

相关