欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Mybatis如何按顺序查询出对应的数据字段

时间:2022-07-15 08:37:03|栏目:JAVA代码|点击:

Mybatis按顺序查询出对应的数据字段

今天遇到一个问题,就是写xml文件时,返回的顺序始终不一致,无论我sql语句写的如何好,前端接收到的数据都是乱的。终于,我发现到了原因。

原来我的查询返回resultType = "map"  , 也就是这个map, 打乱了顺序。

因为map 并不保证存入取出顺序一致, 因此,打乱顺序可想而知了。

解决方法

resultType = "map" 改为  resultType="java.util.LinkedHashMap" 。

介绍:返回为LinkedHashMap时,表中存储的null值并不会存入Map中。

Mybatis基本查询、条件查询、查询排序

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.inspur.analysis.tool.ontology.linkType.dao.LinkTypeMapper">
    <resultMap type="com.inspur.analysis.tool.ontology.linkType.data.LinkType" id="linkType">
        <id property="linkUri" column="LINK_URI"/>
        <result property="uriHash" column="URI_HASH"/>
        <result property="baseTypeUri" column="BASE_TYPE_URI"/>
        <result property="linkLabel" column="LINK_LABEL"/>
        <result property="isAsymmetrical" column="IS_ASYMMETRICAL"/>
        <result property="aliase" column="ALIASE"/>
        <result property="pcName" column="P_C_NAME"/>
        <result property="pcAliase" column="P_C_ALIASE"/>
        <result property="cpName" column="C_P_NAME"/>
        <result property="cpAliase" column="C_P_ALIASE"/>
        <result property="detailIconUri" column="DETAIL_ICON_URI"/>
        <result property="detailIcon" column="DETAIL_ICON"/>
        <result property="edgeIconUri" column="EDGE_ICON_URI"/>
        <result property="edgeIcon" column="EDGE_ICON"/>
        <result property="isSys" column="IS_SYS"/>
        <result property="note" column="NOTE"/>
        <result property="creatorId" column="CREATOR_ID"/>
        <result property="createTime" column="CREATE_TIME"/>
        <result property="editorId" column="EDITOR_ID"/>
        <result property="editTime" column="EDIT_TIME"/>
        <result property="scn" column="SCN"/>
    </resultMap>
    <select id="existLinkTypeUri" parameterType="String"
            resultMap="linkType">
        SELECT * FROM OD_LINK_TYPE
        WHERE LINK_URI = #{linkUri}
    </select>
    <select id="isRootLinkType" parameterType="String"
            resultType="int">
        SELECT EXISTS(SELECT LINK_URI FROM OD_LINK_TYPE
                                      WHERE LINK_URI=BASE_TYPE_URI AND LINK_URI=#{linkUri})
    </select>
    <select id="deleteRootLinkType" parameterType="String">
        DELETE FROM OD_LINK_TYPE WHERE BASE_TYPE_URI=#{baseTypeUri}
    </select>
    <select id="getRootLinkTypeList"  resultMap="linkType">
        SELECT * FROM OD_LINK_TYPE
        WHERE LINK_URI =  BASE_TYPE_URI
    </select>
    <select id="getAllLinkTypeListByParent" parameterType="java.util.Map"
            resultMap="linkType">
        SELECT * FROM OD_LINK_TYPE
        <where>
            LINK_URI != BASE_TYPE_URI
            <if test="baseTypeUri != null">
              AND BASE_TYPE_URI=#{baseTypeUri}
            </if>
        </where>
        <if test="orderfield != null" >
         ORDER BY 
           <choose>    
                <when test="orderfield == 'linkUri'">    
                    LINK_URI ${orderdir} 
                </when>  
                 <when test="orderfield == 'linkLabel'">    
                    LINK_LABEL ${orderdir} 
                </when>  
                 <otherwise>
                   BASE_TYPE_URI ${orderdir}
                </otherwise> 
            </choose>    
        </if>
    </select>
    <select id="getLinkTypeListByCondition" parameterType="java.util.Map"  resultMap="linkType">
        SELECT * FROM OD_LINK_TYPE
        <where>
            LINK_URI != BASE_TYPE_URI
            <if test="linkUri != null">
               AND LINK_URI LIKE '%${linkUri}%'
            </if>
            <if test="linkLabel != null">
                AND LINK_LABEL LIKE '%${linkLabel}%'
            </if>
            <if test="baseTypeUri != null">
                AND BASE_TYPE_URI=#{baseTypeUri}
            </if>
        </where>
      <if test="orderfield != null" >
         ORDER BY 
           <choose>    
                <when test="orderfield == 'linkUri'">    
                    LINK_URI ${orderdir} 
                </when>  
                 <when test="orderfield == 'linkLabel'">    
                    LINK_LABEL ${orderdir} 
                </when>  
                 <otherwise>
                   BASE_TYPE_URI ${orderdir}
                </otherwise> 
            </choose>    
        </if>
    </select>
</mapper>

上一篇:java实现快速排序图文详解

栏    目:JAVA代码

下一篇:java 排序算法之选择排序

本文标题:Mybatis如何按顺序查询出对应的数据字段

本文地址:http://www.codeinn.net/misctech/207889.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有