龙哥网

龙哥网

详细聊聊Mybatis中万能的Map_java(mybatis使用)
2022-03-01

目录
  • 万能的Map
  • demo
    • map 实现add user
    • map 实现通过id查询
  • 多个参数可以使用Map进行传参
    • 总结

      万能的Map

      假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们需要考虑使用Map

      简单来说,map你用什么参数就写什么参数,而实体类需要写所有参数。

      map不需要名称完全对应,通过键的映射取值,实体类必须要求和实体类中属性名字一样

      map传递参数,直接在sql中取出key即可 【parameterType=“map”】

      对象传递参数,直接在sql中取对象的属性即可 【parameterType=“Object”】

      只有一个基本类型 (如int),可以直接在sql中找到

      多个参数用Map或者注解

      demo

      map 实现add user

      UserMapper接口

      public interface UserMapper {
          User getUserById2(Map<String,Object> map);
      }
      

      UserMaper.xml

      <!--    用map后这边参数可以随便写-->
          <insert id="addUser2" parameterType="map" >
              insert into mybatis.user(id, name, pwd) VALUES (#{userid},#{username},#{password});
          </insert>
      

      test

          @Test
          public void addUser2(){
              SqlSession sqlSession=MybatisUtils.getSqlSession();
              UserMapper mapper=sqlSession.getMapper(UserMapper.class);
              Map<String,Object> map=new HashMap<String,Object>();
              map.put("userid",5);
              map.put("username","王五");
              map.put("password","23333");
              mapper.addUser2(map);
              sqlSession.commit();
              sqlSession.close();
          }
      

      map 实现通过id查询

      UserMapper接口

      public interface UserMapper {
         User getUserById2(Map<String,Object> map);
      }
      

      UserMaper.xml

        <select id="getUserById2" parameterType="map" resultType="com.lding.pojo.User">
              select * from mybatis.user where id=#{id} and name=#{name}
          </select>
      

      test

          @Test
          public void getUserById2() {
              SqlSession sqlSession = MybatisUtils.getSqlSession();
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
              Map<String,Object> map=new HashMap<String,Object>();
              map.put("id",1);
              map.put("name","冷丁");
              User userById = mapper.getUserById2(map);
              System.out.println(userById);
              sqlSession.close();
          }

      多个参数可以使用Map进行传参

      xml文件SQL语句

      <select id="findByPriceRange" parameterType="java.util.Map" resultType="com.itlaoqi.mybatis.entity.Goods">
      
              select * from t_goods
      
              where
      
                current_price between #{min}  and #{max}
      
              order by current_price
      
              limit 0,#{limt}
      
          </select>

      总结

      免责声明
      本站部分资源来源于互联网 如有侵权 请联系站长删除
      龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。