欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-06 07:52:22
目录mybatis按顺序查询出对应的数据字段解决方法mybatis基本查询、条件查询、查询排序mybatis按顺序查询出对应的数据字段今天遇到一个问题,就是写xml文件时,返回的顺序始终不一致,无论我...

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>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。