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层的属性格式无关。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM