欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

修复MyBatis在使用Oracle的LISTAGG函数进行有序字段合并时的错误

最编程 2024-08-08 12:49:20
...
  • Oracle 使用LISTAGG有序合并字段
SELECT 
  <分组字段>, 
  LISTAGG(<需要合并的字段>, '<分隔符>') WITHIN GROUP(ORDER BY <排序字段>) <合并字段别名> 
  FROM <表名> 
 GROUP BY <分组字段>
  • MyBatis 合并后的字段太大查询报错解决
<!-- CLOB结果处理 -->
<resultMap id="clobResultHandle" type="java.util.Map">
    <result column="<字段1>" property="<字段1>" jdbcType="VARCHAR" />
    <result column="<合并字段1>" property="<合并字段1>" jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler" />
    <result column="<合并字段2>" property="<合并字段2>" jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler" />
    <result column="<字段2>" property="<字段2>" jdbcType="VARCHAR" />
</resultMap>

<!-- 获取CLOB结果 -->
<select id="getClobResult" resultMap="clobResultHandle">
    SELECT 
        <字段1>,
        <合并字段1>,
        <合并字段2>,
        <字段2>
     FROM <表名>
</select>
  • 合并后的写法
<!-- CLOB结果处理 -->
<resultMap id="clobResultHandle" type="java.util.Map">
    <result column="<分组字段>" property="<分组字段>" jdbcType="VARCHAR" />
    <result column="<合并字段别名>" property="<合并字段别名>" jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler" />
</resultMap>

<!-- 获取CLOB结果 -->
<select id="getClobResult" resultMap="clobResultHandle">
    SELECT 
        <分组字段>, 
        LISTAGG(<需要合并的字段>, '<分隔符>') WITHIN GROUP(ORDER BY <排序字段>) <合并字段别名> 
      FROM <表名> 
     GROUP BY <分组字段>
</select>

推荐阅读