zoukankan      html  css  js  c++  java
  • Mybatis中返回Map

    在Mybatis中,我们通常会像下边这样用:

    • 返回一个结果
    User selectOne(User user);
    
    <select id="selectOne"  parameterType="cn.lyn4ever.entity.User"  resultType="cn.lyn4ever.entity.User">
           select id,username,telphone from user where telphone=#{telphone} and password = #{password}
        </select>
    
    • 返回多个结果(其实这个和上边一样,只不过是查询条件的控制而已)
    List<User> selectList(User user);
    
    <select id="selectOne"  parameterType="cn.lyn4ever.entity.User"  resultType="cn.lyn4ever.entity.User">
           select id,username,telphone from user
        </select>
    

    我们只要将上边的resultType改为java.util.HashMap,这会有生成下边这样

    Map selectList(User user);
    
    <select id="selectOne"  parameterType="cn.lyn4ever.entity.User"  parameterType="cn.lyn4ever.entity.User"   resultType="java.util.HashMap">
           select id,username,telphone from user where telphone=#{telphone} and password = #{password}
        </select>
    

    上这结果就是说,以User类的属性名为key,属性值为value。

    当然,也可以查出来多条记录,将这个Map放进List中

    List<Map> selectList(User user);
    
    <select id="selectOne"  parameterType="cn.lyn4ever.entity.User"  resultType="java.util.HashMap">
           select id,username,telphone from user
        </select>
    

    但是有时候我们想要这种结果,怎么办呢?

    {
    	"01":{
    		username:"zhangsan",
    		telphone:"13000000000"
    	}
    }
    

    也就是我们要自定义一个Map<String,User>,这样的话,有以下两种解决方法:

    1.使用注解

    @MapKey("id")
    Map<String,User> getUserInMap();
    
    <!--xml和之前写法一样-->
    <select id="getUserInMap" parameterType="cn.lyn4ever.entity.User"   resultType="User">
       select id,username,telphone from user where telphone=#{telphone} and password = #{password}
    </select>
    

    这个@MapKey的value写的就是User对象的一个属性

    2.在xml文件中写上

     HashMap<String,Object> getUserInMap();
    
    <select id="getUserInMap" parameterType="cn.lyn4ever.entity.User"   resultType="java.util.HashMap">
    SELECT id as 'key', * as 'value', id,username,telphone from user where telphone=#{telphone} and password = #{password}
    </select>
    

    当然以上这两种方法,如果查出来是多条的话也会是List的形式

    reference:https://www.cnblogs.com/Lyn4ever/archive/2019/09/30/11614416.html

  • 相关阅读:
    使用Bootstrap模态框实现增删改查功能
    表中多个按钮进行操作不需要跳转页面的实现
    在调试javascript的时候,要常使用alert()
    Request.UrlReferrer 实现页面刷新
    确认框的使用。弹出一个确认框,Ajax提交一个请求,刷新页面。
    条件构造器queryWrapper和updateWrapper
    接口调用:从第三方接口获取数据
    Dictionary的用法
    数组和List之间的转换
    调用存储过程
  • 原文地址:https://www.cnblogs.com/marxtsui/p/14040481.html
Copyright © 2011-2022 走看看