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>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。