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类型,参数占位符名称 叫什么都可以。尽量做到见名知意

相关文章
|
6月前
|
SQL XML Java
mybatis Mapper的概念与实战
MyBatis 是一个流行的 Java 持久层框架,它提供了对象关系映射(ORM)的功能,使得Java对象和数据库中的表之间的映射变得简单。在MyBatis中,Mapper是一个核心的概念,它定义了映射到数据库操作的接口。简而言之,Mapper 是一个接口,MyBatis 通过这个接口与XML映射文件或者注解绑定,以实现对数据库的操作。
181 1
|
6月前
|
SQL Java 数据库连接
mybatis常见分页技术和自定义分页原理实战
mybatis常见分页技术和自定义分页原理实战
232 0
|
3月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
174 0
|
6月前
|
缓存 Java 数据库连接
MyBatis三级缓存实战:高级缓存策略的实现与应用
MyBatis三级缓存实战:高级缓存策略的实现与应用
137 0
MyBatis三级缓存实战:高级缓存策略的实现与应用
|
6月前
|
SQL Java 数据库连接
Mybatis技术专题(3)MybatisPlus自带强大功能之多租户插件实现原理和实战分析
Mybatis技术专题(3)MybatisPlus自带强大功能之多租户插件实现原理和实战分析
390 1
|
6月前
|
XML Java 数据库连接
Spring Boot与MyBatis:整合与实战
【4月更文挑战第29天】在现代的Java Web应用开发中,持久化层框架扮演了至关重要的角色。MyBatis作为一款优秀的持久化框架,被广泛应用于Java开发中。Spring Boot提供了简化开发流程的功能,而与MyBatis的整合也变得更加便捷。
73 0
|
6月前
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
|
1月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
106 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
295 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个