Mybatis实战练习六【批量删除&Mybatis参数传递】(下)

简介: Mybatis实战练习六【批量删除&Mybatis参数传递】

Mybatis参数传递


Mybatis 接口方法中可以接收各种各样的参数,如下:


  • 多个参数


  • 单个参数:单个参数又可以是如下类型


POJO 类型


Map 集合类型


Collection 集合类型


List 集合类型


Array 类型


其他类型


多个参数

如下面的代码,就是接收两个参数,而接收多个参数需要使用 @Param 注解,那么为什么要加该注解呢?这个问题要弄明白就必须来研究Mybatis 底层对于这些参数是如何处理的。


User select(@Param("username") String username,@Param("password") String password);
<select id="select" resultType="user">
  select *
    from tb_user
    where 
      username=#{username}
      and password=#{password}
</select>


我们在接口方法中定义多个参数,Mybatis 会将这些参数封装成 Map 集合对象,值就是参数值,而键在没有使用 @Param 注解时有以下命名规则:


以 arg 开头 :第一个参数就叫 arg0,第二个参数就叫 arg1,以此类推。如:


map.put("arg0",参数值1);
map.put("arg1",参数值2);


以 param 开头 : 第一个参数就叫 param1,第二个参数就叫 param2,依次类推。如:  


map.put("param1",参数值1);
map.put("param2",参数值2);


代码验证:


在 UserMapper 接口中定义如下方法


User select(String username,String password);

在 UserMapper.xml 映射配置文件中定义SQL


<select id="select" resultType="user">
  select *
    from tb_user
    where 
      username=#{arg0}
      and password=#{arg1}
</select>

或者


<select id="select" resultType="user">
  select *
    from tb_user
    where 
      username=#{param1}
      and password=#{param2}
</select>

运行代码结果如下  

在映射配合文件的SQL语句中使用用 arg 开头的和 param 书写,代码的可读性会变的特别差,此时可以使用 @Param 注解。


在接口方法参数上使用 @Param 注解,Mybatis 会将 arg 开头的键名替换为对应注解的属性值。


代码验证:


在 UserMapper 接口中定义如下方法,在 username 参数前加上 @Param 注解


User select(@Param("username") String username, String password);

Mybatis 在封装 Map 集合时,键名就会变成如下:


map.put("username",参数值1);
map.put("arg1",参数值2);
map.put("param1",参数值1);
map.put("param2",参数值2);


在 UserMapper.xml 映射配置文件中定义SQL


<select id="select" resultType="user">
  select *
    from tb_user
    where 
      username=#{username}
      and password=#{param2}
</select>

运行程序结果没有报错。而如果将 #{} 中的 username 还是写成 arg0  


<select id="select" resultType="user">
  select *
    from tb_user
    where 
      username=#{arg0}
      and password=#{param2}
</select>

运行程序则可以看到错误  

==结论:以后接口参数是多个时,在每个参数上都使用 @Param 注解。这样代码的可读性更高。==  


单个参数

  • POJO 类型


直接使用。要求 属性名 和 参数占位符名称 一致


  • Map 集合类型


直接使用。要求 map集合的键名 和 参数占位符名称 一致


  • Collection 集合类型


Mybatis 会将集合封装到 map 集合中,如下:


map.put("arg0",collection集合);
map.put("collection",collection集合;


==可以使用 @Param 注解替换map集合中默认的 arg 键名。==


  • List 集合类型


Mybatis 会将集合封装到 map 集合中,如下:


map.put("arg0",list集合);
map.put("collection",list集合);
map.put("list",list集合);


==可以使用 @Param 注解替换map集合中默认的 arg 键名。==


  • Array 类型


Mybatis 会将集合封装到 map 集合中,如下:


map.put("arg0",数组);
map.put("array",数组);


==可以使用 @Param 注解替换map集合中默认的 arg 键名。==


  • 其他类型


比如int类型,参数占位符名称 叫什么都可以。尽量做到见名知意

相关文章
|
SQL XML Java
mybatis Mapper的概念与实战
MyBatis 是一个流行的 Java 持久层框架,它提供了对象关系映射(ORM)的功能,使得Java对象和数据库中的表之间的映射变得简单。在MyBatis中,Mapper是一个核心的概念,它定义了映射到数据库操作的接口。简而言之,Mapper 是一个接口,MyBatis 通过这个接口与XML映射文件或者注解绑定,以实现对数据库的操作。
497 1
|
SQL Java 数据库连接
mybatis常见分页技术和自定义分页原理实战
mybatis常见分页技术和自定义分页原理实战
969 0
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
1277 0
|
缓存 Java 数据库连接
MyBatis三级缓存实战:高级缓存策略的实现与应用
MyBatis三级缓存实战:高级缓存策略的实现与应用
370 0
MyBatis三级缓存实战:高级缓存策略的实现与应用
|
SQL Java 数据库连接
Mybatis技术专题(3)MybatisPlus自带强大功能之多租户插件实现原理和实战分析
Mybatis技术专题(3)MybatisPlus自带强大功能之多租户插件实现原理和实战分析
1227 1
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
|
XML Java 数据库连接
Spring Boot与MyBatis:整合与实战
【4月更文挑战第29天】在现代的Java Web应用开发中,持久化层框架扮演了至关重要的角色。MyBatis作为一款优秀的持久化框架,被广泛应用于Java开发中。Spring Boot提供了简化开发流程的功能,而与MyBatis的整合也变得更加便捷。
203 0
|
6月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1043 1
Spring boot 使用mybatis generator 自动生成代码插件
|
9月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
706 0
|
11月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
481 2