后端开发写Mapper(SQL)遇到的问题
背景
近期做了一个前后端开发,在自己联调的过程中发现了自己容易犯错的地方,大部分是写的SQL不对导致的,不过最终都很快解决了,不过也反映出自己在SQL开发时虽然知识有了但缺乏熟练度。写一个博客记录一下自己犯的错。
错误内容
SQL中批量操作 in
int batchSwitchTenantNodeInfo(@Param("po") List
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
这里有几个需要注意的点,也是我很容易犯错的点:
1、查询的字段是所有的字段,但是实体类定义的时候自身只包含了部分字段,其余的字段是通过继承公共类来补充的,这个时候返回值类型就不能直接使用实体类接收,否则会继承的字段就映射不到,需要使用resultMap手动的进行绑定;