首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《从Java面试题来看源码》,单参数,多参数,如何正确使用 @param

Mybatis Dao 接口中,单参数,多参数,如何正确使用 @Param? 答:单参数、多参数下,都可以用注解或不用注解。...多参数下,建议使用注解,方便后期调式,如果不用注解必须使用 0,1… 索引 或者 param1,param2… 源码分析 如何初始化,请看该篇文章《从面试题来看源码》,Dao 接口的工作原理 首先还是来看...> mapperInterface, Method method, Configuration config) {     //记录了 SQL语句的名称和类型     this.command = new... (param1, param2, ...)         // 下面是为参数创建”param+索号”格式的默认参数名称,例如: param1, param2 等,并添加到param集合中         ...所以说: 多参数下,如果不用注解必须使用 0,1… 索引 或者 param1,param2… 以上就是对该面试题的源码分析。

56640
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java持久层框架MyBatis全注解详解

    1 @Mapper MyBatis映射器的标记接口 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件 但是源码中并没有对于这个注解的详细解释 ?...@Param注解, * 要不然会找不到对应的参数进而报错 2 @Param mybatis中使用@param和不使用区别 使用@Param注解 当以下面的方式进行写SQL语句时: @Select("select...和mybatis中@param使用区别 spring中@param /** * 查询指定用户和企业关联有没有配置角色 * @param businessId memberId * @return...注:如果Mapper.java文件中引用的是Spring的 org.springframework.data.repository.query.Param;1 但是Mapper.xml中使用的是mybatis...Available parameters are [1, 0, param1, param2]1 参考 @Param注解

    1.2K21

    Mybatis的几种传参方式,你了解多少?

    目录 前言 单个参数 多个参数 使用索引【不推荐】 使用@Param 使用Map POJO【推荐】 List传参 数组传参 总结 前言 前几天恰好面试一个应届生,问了一个很简单的问题:你了解过Mybatis...单个参数 单个参数的传参比较简单,可以是任意形式的,比如#{a}、#{b}或者#{param1},但是为了开发规范,尽量使用和入参时一样。...使用索引【不推荐】 多个参数可以使用类似于索引的方式传值,比如#{param1}对应第一个参数,#{param2}对应第二个参数..........status=#{param2} 注意:由于开发规范,此种方式不推荐开发中使用。...Integer status; } List传参 List传参也是比较常见的,通常是SQL中的in。

    2.6K63

    SpringBoot系列Mybatis之参数传递的几种姿势

    SpringBoot 系列 Mybatis 之参数传递的几种姿势 在 mybatis 的日常开发中,mapper 接口中定义的参数如何与 xml 中的参数进行映射呢?...接口参数类型为Map/POJO又该如何处理? 本文将主要介绍一下mybatis的日常开发中,mapper接口中的定义的参数与xml中占位符的几种映射绑定方式 I....Map 传参 如果参数类型并不是简单类型,当时 Map 类型时,在 xml 文件中的参数,可以直接使用 map 中对应的 key 来指代 /** * 参数类型为map时,直接使用key即可 * @param...POJO 对象 另外一种常见的 case 是传参为简单的实体对象,这个时候 xml 中的参数也可以直接使用对象的 fieldName 来指代,和 map 的使用方式差不多 /** * 参数类型为java...,多参数时,第一个参数可用 param1 或 arg0 来表示,第二个参数为 param2 或 arg1。。。

    1K30

    SpringBoot系列Mybatis之参数传递的几种姿势

    [logo.jpg] SpringBoot 系列 Mybatis 之参数传递的几种姿势 在 mybatis 的日常开发中,mapper 接口中定义的参数如何与 xml 中的参数进行映射呢?...接口参数类型为Map/POJO又该如何处理? 本文将主要介绍一下mybatis的日常开发中,mapper接口中的定义的参数与xml中占位符的几种映射绑定方式 I....Map 传参 如果参数类型并不是简单类型,当时 Map 类型时,在 xml 文件中的参数,可以直接使用 map 中对应的 key 来指代 /** * 参数类型为map时,直接使用key即可 * @param...POJO 对象 另外一种常见的 case 是传参为简单的实体对象,这个时候 xml 中的参数也可以直接使用对象的 fieldName 来指代,和 map 的使用方式差不多 /** * 参数类型为java...,多参数时,第一个参数可用 param1 或 arg0 来表示,第二个参数为 param2 或 arg1。。。

    1.8K00

    MyBatis框架基础知识(03)

    Available parameters are [arg1, arg0, param1, param2] 在错误的提示信息中,可以明确的看到:可用的参数是[arg1, arg0, param1, param2...SET email=#{arg1} WHERE id=#{arg0} 当然,也可以使用param1表示抽象方法中的第1个参数,使用param2表示抽象方法的第2个参数,例如: 参数名称,只不过是从1开始顺序编号的,例如参数名为param1、param2、param3、param4…… 虽然使用arg或param系列的名称可以解决多参数的问题,但是,会导致SQL映射的配置代码不直观的问题...小结:如果抽象方法的参数列表中的参数超过了1个(达到2个或更多个),就必须为每一个参数添加@Param注解,并且,在#{}占位符中,需要使用的就是@Param注解中配置的注解参数!...关于#{}和${}格式的占位符 在MyBatis中,配置SQL映射时,可以使用#{}或${}格式的占位符表示某个变量。

    78230

    快速学习-MyBatis映射文件

    Map的key是param1,param2,或者0,1…,值就是参数的值 取值: #{0 1 2 …N / param1 param2 …… paramN} 命名参数 为参数使用@Param起一个名字...,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字 取值: #{自己指定的名字 / param1 param2 … paramN} POJO 当这些参数属于我们业务POJO...取值: Array: #{array} Collection(List/Set): #{collection} List : #{collection / list} 4.4.2 参数传递源码分析 以命名参数为例...{key}:可取单个普通类型、 POJO类型 、多个参数、 集合类型 获取参数的值,预编译到SQL中。...唯一的要求是列名和javaBean属性名一致 如果autoMappingBehavior设置为null则会取消自动映射 数据库字段命名规范,POJO属性符合驼峰命名法,如A_COLUMNaColumn

    70320

    Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)

    这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数,默认值为未设置(unset)。...多个参数:任意多个参数会被MyBatis重新包装成一个Map传入,Map的key为param1、param2、0、1,Map的value就是参数的值,可以通过key来获取参数的值 命名参数:使用@Param...注解为参数起一个名字,MyBatis就会将这些参数封装到Map时使用指定的名字 POJO:当参数属于业务POJO时,直接传递POJO Map:也可以将多个参数封装为Map,直接传递Map 传递多个参数...执行测试 就传入一个参数,写啥名都能取到 传入多个参数时,使用#{参数名}是无效的,可以使用0、1或者param1、param2来代替,这是因为只要传入了多个参数,MyBatis就会自动将这些参数封到...; id使用#{id}取值,empName使用#{param2}取值,使用#{param3.email}可以取出Employee中的email信息 参数处理 SQL映射文件中SQL语句参数位置支持的属性有

    34520

    Swift讲解专题十三——下标访问 原

    二、下标的语法结构         下标使用subscript来定义,其有些类似于方法,参数和返回值分别作为下标入参和通过下标所取的值。...但是在subscript实现部分,又十分类似于计算属性,其需要实现一个get块和可选实现一个set块,get块用于使用下标取值,set块用于使用下标设置值,因此,subscript结构更像是计算属性和方法的混合体...对于多维下标的访问方式,只需修改subscript中的参数个数即可,示例如下: class MyClass { var array=[1,1,1,1,1] subscript(param1...return array[param1] } } } var obj = MyClass() obj[0,1] = 3 三、下标的特性         Swift中的下标可以自定参数个数和参数类型...但是有一点需要注意,下标的参数不能设置默认值,也不能设置为in-out类型。

    38530

    SpringCloud学习笔记(3):使用Feign实现声明式服务调用

    它支持Spring MVC注解和JAX-RS注解,还支持可插拔式的编码器和解码器。整合了Eureka,Ribbon和Hystrix,具有可插拔、基于注解、负载均衡、服务熔断等一系列便捷功能。...") String param1, @RequestParam("param2") Integer param2); } 解决方法2 将参数封装到Map里,更改消费者Feign接口和Controller...自定义类型的参数 OpenFeign的@QueryMap注解支持将自定义类型用于GET参数映射,由于@QueryMap和Spring不兼容,Spring Cloud OpenFeign提供了一个等价的@...1.分别在提供者和消费者中创建类Params(可以建一个公共模块,然后在提供者和消费者中添加依赖): public class Params { private String param1; private...[param1=" + param1 + ", param2=" + param2 + "]"; } public Params(String param1, Integer param2) {

    38210

    Mybatis系列第5篇:Mapper接口多种方式传参详解、原理、源码解析

    传递一个Map参数 用法 如果我们需要传递的参数比较多,参数个数是动态的,那么我们可以将这些参数放在一个map中,key为参数名称,value为参数的值。...param1, param2] 上面表示可用的参数名称列表,我们可以在sql中通过#{参数名称}来引参数列表中的参数,先不说这4个参数具体怎么来的,那么我们将sql改成下面这样试试: SELECT *...多参数mybatis的处理 mybatis处理多个参数的时候,会将多个参数封装到一个map中,map的key为参数的名称,java可以通过反射获取方法参数的名称,下面这个方法: UserModel getByIdOrName...",name); 那么参数中的param1、param2又是什么呢?...,param1, param2始终在这里,这个param1, param2就是为了应对不同的编译方式导致参数名称而发生变化的,mybatis内部除了将参数按照名称->值的方式放入map外,还会按照参数的顺序放入一些值

    3.9K31

    Mybatis系列第五讲 Mapper接口多种方式传参详解、原理、源码解析

    传递一个Map参数 用法 如果我们需要传递的参数比较多,参数个数是动态的,那么我们可以将这些参数放在一个map中,key为参数名称,value为参数的值。...param1, param2] 上面表示可用的参数名称列表,我们可以在sql中通过#{参数名称}来引参数列表中的参数,先不说这4个参数具体怎么来的,那么我们将sql改成下面这样试试: SELECT *...多参数mybatis的处理 mybatis处理多个参数的时候,会将多个参数封装到一个map中,map的key为参数的名称,java可以通过反射获取方法参数的名称,下面这个方法: UserModel getByIdOrName...",name); 那么参数中的param1、param2又是什么呢?...,param1, param2始终在这里,这个param1, param2就是为了应对不同的编译方式导致参数名称而发生变化的,mybatis内部除了将参数按照名称->值的方式放入map外,还会按照参数的顺序放入一些值

    1.2K51

    Dockerfile 基本命令详解

    Dockerfile 的基本结构 Dockerfile 一般分为:基础镜像、镜像元信息、镜像操作指令和容器启动时执行指令,# 为 Dockerfile 中的注释。 3....4.1 FROM 指令 FROM是指定基础镜像,必须为第一个命令,格式: FROM : 其中 tag 或 digest 是可选的,如果不使用这两个值时,会使用 latest 版本的基础镜像...格式: # 执行可执行文件,优先执行 CMD ["executable","param1","param2"] # 设置了 ENTRYPOINT,则直接调用ENTRYPOINT添加参数 参见 CMD...讲解 CMD ["param1","param2"] # 执行shell命令 CMD command param1 param2 示例: CMD ["/usr/bin/bash","--help...格式: #可执行文件, 优先 ENTRYPOINT ["executable", "param1", "param2"] # shell内部命令 ENTRYPOINT command param1

    77330
    领券