mybatis 动态字段处理及数据返回

mybatis映射文件:

<select id="find" parameterType="java.util.Map" resultType="map">
        SELECT org_id,
        org.org_name, ${sqlParam},
        r.create_date
        FROM r_index_org_score
    </select>

${sqlParam} 是通过代码拼接的sql片段,通过$直接拼接到SQL语句中,拼接的SQL片段中存在动态字段,不在mybatis映射文件的resultMap中,这时该语句的返回类型使用 map(即 resultType="map"),在mapper层通过 Map接收。

${sqlParam} 的内容如下:

 max( CASE r.index_id WHEN '1' THEN r.score ELSE 0 END ) zzthyl,
 max( CASE r.index_id WHEN '2' THEN r.score ELSE 0 END ) OA_HYL,
 max( CASE r.index_id WHEN '3' THEN r.score ELSE 0 END ) ZLB_ZCL,

Mapper层对该方法的调用,通过Map接收查询结果,如下:
List<Map<String, Object>> find(@Param("orgId") int orgId);

这样获取的所有字段类型,与数据库中对应字段类型完全一致,按照jdk的语法环境进行解析为对应数据格式。与持久化层的resultMap中的属性格式、与DAO层的属性格式无关。

posted on 2022-01-20 18:09  等茶的茶  阅读(1573)  评论(0编辑  收藏  举报

导航