详细聊聊Mybatis中万能的Map

目录
  • 万能的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>

总结

到此这篇关于Mybatis中万能的Map的文章就介绍到这了,更多相关Mybatis中的Map内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mybatis动态sql之Map参数的讲解

    mybatis 动态sql之Map参数 Mapper文件: <mapper namespace="com.cn.shoje.oa.modules.logistics.dao.PurcDao"> <select id="findAll" parameterType="Map" resultType="Purchase"> select * from prod_purchase where 1=1 <

  • MyBatis查询返回Map示例代码

    前言 有时候我们做查询, 只需要返回两个string类型的字段,方便我们后续的处理.比如根据商品的code查询对应的分类的名字,需要返回一个map, key为商品code, value为商品分类对应的名称.以方便我们后续对结果集的处理.如果你直接用mybatis返回一个map, 你可能会发现,结果根据不是自己需要的.这时候我们需要自己实现一个ResultHandler来实现我们想要的结果,废话不多说,直接上代码 方法如下 第一步,在mapper.xml文件当中,定义一个ResultMap <re

  • 详细聊聊Mybatis中万能的Map

    目录 万能的Map demo map 实现add user map 实现通过id查询 多个参数可以使用Map进行传参 总结 万能的Map 假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们需要考虑使用Map 简单来说,map你用什么参数就写什么参数,而实体类需要写所有参数. map不需要名称完全对应,通过键的映射取值,实体类必须要求和实体类中属性名字一样 map传递参数,直接在sql中取出key即可 [parameterType="map"] 对象传递参数,直接在sql中取对

  • 详解Mybatis中万能的Map和模糊查询写法

    1.万能的Map 假设,我们的实体类,或者数据库中的表,字段或参数过多,我们接口参数以前用的是实体类,现在考虑使用下Map! 接口: //万能的Map int addUser2(Map<String,Object> map); mapper.xml: <!--Map中的key--> <insert id="addUser2" parameterType="map"> insert into mybatis.user (id,nam

  • 详细聊聊SpringBoot中动态切换数据源的方法

    其实这个表示有点不太对,应该是 Druid 动态切换数据源的方法,只是应用在了 springboot 框架中,准备代码准备了半天,之前在一次数据库迁移中使用了,发现 Druid 还是很强大的,用来做动态数据源切换很方便. 首先这里的场景跟我原来用的有点点区别,在项目中使用的是通过配置中心控制数据源切换,统一切换,而这里的例子多加了个可以根据接口注解配置 第一部分是最核心的,如何基于 Spring JDBC 和 Druid 来实现数据源切换,是继承了org.springframework.jdbc

  • 聊聊Mybatis中sql语句不等于的表示

    Mybatis sql语句不等于的表示 如果直接写 select * from user where id <> 217; mybatis就会报语法错误,<>特殊字符需要转义 如下 select * from user where id <> 217; 使用Mybatis的时候,特殊字符需进行转义,如 <> <> & & &apos; ' " " Mybatis 特殊符号(大于,小于,不等于)及常用函数

  • 详细聊聊sql中exists和not exists用法

    目录 exists: exists 和in 的区别 not exists详细介绍: 附案例分析 总结 之所以要说这个问题,是因为项目中用到了not exists,但两者写的语句只有一点差别,结果一个有问题了,一个没问题.具体问题下面详细说明,先来看看exists如何应用. exists: 强调的是是否有返回集,不需知道具体返回的是什么,比如: SELECT * FROM customer WHERE not EXISTS ( SELECT 0 FROM customer_goods WHERE

  • 详细聊聊MySQL中慢SQL优化的方向

    目录 前言 SQL语句优化 记录慢查询SQL 如何修改配置 查看慢查询日志 查看SQL执行计划 如何使用 SQL编写优化 为何要对慢SQL进行治理 总结 前言 影响一个系统的运行速度的原因有很多,是多方面的,甚至可能是偶然性的,或前端,或后端,或数据库,或中间件,或服务器,或网络等等等等,真正的去定位一个问题需要对系统有一定的认知,可以根据自身的判断去缩小问题范围. 今天不说其他的优化,单独把数据库的优化拿出来说几个优化方向. 跟系统的优化方向一样,数据库的优化,同样也是多方面的,其中涵盖着SQ

  • 详细聊聊vue中组件的props属性

    目录 问题一:那props具体是怎么使用呢?原理又是什么呢?往下看 问题二:那如果我们想给年龄加1岁,怎么实现? 问题三:对于年龄这一类型,我们最希望拿到的是什么数据类型? 问题四:可以限制类型,那是不是也可以限制是否必传呢? 问题五:props接收的属性值可以修改吗? 问题六:必须要修改props属性值,怎么办? 总结:配置项props 总结 今天这篇文章,让你彻底学会props属性-- props主要用于组件的传值,他的工作就是为了接收外面传过来的数据,与data.el.ref是一个级别的配

  • 详细聊聊MySQL中的LIMIT语句

    目录 问题 server层和存储引擎层 那LIMIT是什么鬼? 怎么办? 吐个槽 最近有多个小伙伴在答疑群里问了小孩子关于LIMIT的一个问题,下边我来大致描述一下这个问题. 问题 为了故事的顺利发展,我们得先有个表: CREATE TABLE t ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, key1 VARCHAR(100), common_field VARCHAR(100), PRIMARY KEY (id), KEY idx_key1 (key1

  • 详细聊聊JDK中的反模式接口常量

    目录 前言 常量接口 类接口 枚举类型 结束语 前言 在实际开发过程中,经常会需要定义一个文件,用于存储一些常量,这些常量设计为静态公共常量(使用 public static final 修饰).这个时候就出现两种选择: 在接口中定义常量,比如 JDK 1.1 中的 java.io.ObjectStreamConstans 接口: 在类中定义常量,比如 JDK 1.7 中的 java.nio.charset.StandardCharsets: 这两种方式都能够达到要求:存储常量.无需实例化.下面

  • 详细聊聊Vue中的options选项

    目录 Vue中的options选项 options的五类属性 入门属性 使用vue文件添加组件 computed(计算属性) 用途 缓存 示例: watch(监听) 用途 何为变化 deep: true是干什么的? computed和watch的区别 computed计算属性 watch 监听器 总结 Vue中的options选项 options的五类属性 数据: data,props,propsdata,computed,methods,watch DON: el,template,rende

随机推荐