首页 > 其他分享 >mapper接口开发--条件,为什么是接口、参数

mapper接口开发--条件,为什么是接口、参数

时间:2023-05-10 18:13:12浏览次数:36  
标签:mapper Map -- 接口 map 参数 put

三个必要条件

  • _mapper.java和 _mapper.xml 需要在同一个目录 这就是为什么看到resources有同样的包
  • xml中的namespace为mapper.java的全限定路径
  • mapper.xml的id和mapper.java的方法名字、参数类型、返回值一致

最后通过sqlSession.getMapper(*mapper.class)得到接口,这样就可以操作java一样了

mapper为什么要定义成接口

  • mybatis底层通过namespace+id映射到对应xml,通过JDK动态代理帮助生成具体实现

  • JDK动态代理只能代理有接口的类,通过Proxy.newProxyInstall()生成代理,调用invoke方法实现

  • 生成的代理类底层已经继承了Proxy类,Java是一继承多实现的,所以mapper只能定义成接口

mapper的参数

除了基本类和POJO、Map都建议使用@Params注解,提高可读性

多个参数

mybatis默认是将参数解析成Map,参数是arg0 | params1 这样,可读性低,使用注解@Params(“ ”) 可以将arg0替换成你指定的key,这个时候KEY arg将会消失,params*保留。

单个参数
  • POJO类,直接使用。属性名和参数名称一致

  • Map集合,直接使用,Key和参数名一致

  • Collection集合,封装为Map

    map.put("arg0",collection);
    map.put("collection",collection集合);
    
  • List集合,封装成Map

    map.put("arg0",collection);
    map.put("collection",list集合);
    map.put("list",list集合);
    
  • Array数组,封装为Map

    map.put("arg0",array);
    map.put("array",array数组);
    
  • 其他类型,直接使用。

标签:mapper,Map,--,接口,map,参数,put
From: https://www.cnblogs.com/yuandian8/p/17388828.html

相关文章

  • SVM 学习笔记
    SupportVectorMachine(SVM),也是广泛应用于各个领域的机器学习算法。注意为了方便,本文取消了\(x_0=1\)的这一维,故原来的\(\mathbf{\theta}^{\mathbf{T}}\mathbf{x}\),现在记为\(\mathbf{\theta}^{\mathbf{T}}\mathbf{x}+\theta_0\)。1.SVM模型我们先复习一下Logisti......
  • 麻了,一个操作把MySQL主从复制整崩了
    前言最近公司某项目上反馈mysql主从复制失败,被运维部门记了一次大过,影响到了项目的验收推进,那么究竟是什么原因导致的呢?而主从复制的原理又是什么呢?本文就对排查分析的过程做一个记录。主从复制原理我们先来简单了解下MySQL主从复制的原理。主库master服务器会将SQL记录......
  • 电源层
    PCB布局布线的建议是一个高附加值的任务,它的目的在于完成高EMC性能PCB设计,同时将由于EMC问题而产生的PCB布局布线成本最小化。PCB布局布线的建议的核心包括以下三方面:l指出关键EMC器件的在PCB中的相对位置;l指岀PCB中哪些区域需要进行完整的地平面设计,并将该地平面的阻抗最小......
  • springboot自动装配过程
    一、首先要知道springboot的启动类然后知道启动类有一个重要的注解:@SpringBootApplication然后跟踪查看,它是由@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan注解组成的@SpringBootConfiguration作用是声明当前类是一个组件@ComponentScan作用是扫描启......
  • mybatis运行原理-- 总述
    1.根据mybatis配置文件和mapper映射文件,初始化出Configuration对象。得到sqlSessionFactory,包含数据库的信息,和所有的mapper路径,mapper接口路径可用包扫描的方式代替;2.sqlSessionFactory.openSession得到sqlSession,里面已经包含了Configuration以及Executor(defaultExecutorType......
  • Docker 国内镜像加速
    1.摘要国内从DockerHub拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker官方和国内很多云服务商都提供了国内加速器服务,建议根据运行docker的云平台选择对应的镜像加速服务。下面列出国内常用的加速站点,排名不分先后,总体来说阿里云速度较稳定。docker中国区官方镜像加......
  • linux python解决中文字体
    1.异常我的python代码如下importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']#中文字体设置plt.title('中华人民共和国')plt.plot([1,2,3,4],['一','二','三','四'],color="b",l......
  • 《人月神话》阅读笔记03
    “软件项目开发的完成与增加人员的问题”这句话听起来通俗易懂,但实现起来却遇到了相当大的困难,这是我在阅读完成《人月神话》时最大的感受,我想这种问题的出现主要是就订单项目而言,因为人员的增加主要是因为客户所要求实现的东西并没有在计划的时间内收到满意的答复和应得的功能与......
  • dell optiplex7050 mff 安装esxi黑苹果和黑群晖
    原文:https://zhuanlan.zhihu.com/p/565166435?utm_id=0这是一篇备忘录,各位看之前最好先去找找图文流程或者视频,我写的很简单,很多地方都省略了。我用的戴尔optiplex7050mff迷你机,一个nvme一个sata,单网卡,intel8265无线网卡macos没有驱动,wifi和蓝牙无法使用,是否直通成功我也不知......
  • springboot+Prometheus+grafana 实现自定义监控(请求数、响应时间、JVM性能)
    自定义监控1.SpringBoot工程集成Micrometer1.1引入依赖1.2配置1.3监控jvm信息1.4创建自定义监控1.5添加具体业务代码监控2.集成Prometheus2.1安装2.2集成配置3.使用GrafanaDashboard展示监控项3.1安装grafana3.2配置prometheus数据源3.3增加jvm面板3.4配置业务接口监控面板......