引言

目前,MyBatis的使用越来越普遍,也有一些公司使用Hibernate。使用MyBatis需要我们自己书写SQL语句,面对各种复杂的场景,SQL传递多参是很普遍的。如何传递多参应对不同的场景也是一种学问。下面总结了4种传递多参的方法。

Method1. 顺序传参

1 public User selectUserMessage(String name, int deptId);
2
3 <select id="selectUserMessage" resultMap="UserMessageResultMap">
4 select * from user
5 where user_name = #{0} and dept_id = #{1}
6 </select>

#{ }中的数字代表传入参数的顺序。

这种方法不建议使用,因为SQL层表达不够直观,并且一旦顺序调整容易出现错误。

Method2. @Param注解传参

1 public User selectUserMessage(@Param("userName") String name, @Param("deptId") int deptId);
2
3 <select id="selectUserMessage" resultMap="UserMessageResultMap">
4 select * from user
5 where user_name = #{userName} and dept_id = #{deptId}
6 </select>

注:#{ }中的名称对应的是注解@Param括号里修饰的名称。

这种方法在参数不多的场景下还是比较直观的,推荐使用。

Method3. Map传参

1 public User selectUserMessage(Map<String, Object> params);
2
3 <select id="selectUserMessage" parameterType="java.util.Map" resultMap="UserMessageResultMap">
4 select * from user
5 where user_name = #{userName} and dept_id = #{deptId}
6 </select>

注:#{ }中的名称对应的是Map里key的名称。

这种方法适合传递多个参数,且参数易变能灵活传递的情形。

Method4. Java Bean传参

1 public User selectUserMessage(Map<String, Object> params);
2
3 <select id="selectUserMessage" parameterType="com.test.User" resultMap="UserMessageResultMap">
4 select * from user
5 where user_name = #{userName} and dept_id = #{deptId}
6 </select>

注:#{ }中的名称对应的是User类里的成员属性。

这种方法很直观,但需要建一个实体类,扩展不容易,需要加属性,看情况使用。

MyBatis框架使用 —— 传递多个参数的方式的更多相关文章

  1. Mybatis接口中传递多个参数

    1.接口 public interface MemberMapper { public boolean insertMember(Members member); public Members sel ...

  2. Mybatis框架基础入门(三)--Mapper动态代理方式开发

    使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...

  3. Mybatis中select传递多个参数

    一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...

  4. mybatis之parameterType传递多个参数

    当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...

  5. java mybatis 框架下多种类型的参数传入到xml问题

    由于公司要求,最近从.net向java 转,然后过程中遇到各种奇葩问题,特在此随记一番. 场景:一个方法中有两个参数,一个List的集合,一个int 类型的参数,最初我在xml的sql参数,无论定义成 ...

  6. Mybatis框架基于映射文件和配置文件的方式,实现增删改查,可以打印日志信息

    首先在lib下导入: 与打印日志信息有关的架包 log4j-1.2.16.jar mybatis架包:mybatis-3.1.1.jar 连接数据库的架包:mysql-connector-java-5 ...

  7. Mybatis框架进行批量导入和删除有三种方式

    首先创建一个数据库 CREATE TABLE user (   id varchar(32) CHARACTER SET utf8 NOT NULL,   name varchar(50) CHARA ...

  8. Mybatis 传递多个参数

    Mybatis提供了4种传递多个参数的方法: 1 Map sql语句 接口 调用方法 这个方法虽然简单易用,但是存在一个弊端:Map存储的元素是键值对,可读性不好. 2 注解 使用MyBatis的参数 ...

  9. MyBatis DAO层传递参数到mapping.xml 几种方式

    Dao层传递参数到mapping.xml文件的几种方式:(Mybatis传值总结) 第一种:传递单个参数 Dao层Code片段: /** * 根据articleId查询XXXX详情. * * @par ...

随机推荐

  1. java13编程基础之数组深入

    大纲一维数组概述数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们. 这些按序排列 ...

  2. JAVA_基础IO流随机存取文件流(四)

    随机存取文件流 RandomAccessFile 声明在java.io包下,但直接继承于java.lang.Object类.并 且它实现了DataInput.DataOutput这两个接口,也就意味着 ...

  3. Map遍历的几种方式

    代码示例 /** * @author liaowenhui * @date 2020/6/25 11:15 */ public class TestMap { public static void m ...

  4. 【项目实践】一文带你搞定Session和JWT的登录认证方式

    以项目驱动学习,以实践检验真知 前言 登录认证,估计是所有系统中最常见的功能了,并且也是最基础.最重要的功能.为了做好这一块而诞生了许多安全框架,比如最常见的Shiro.Spring Security ...

  5. Databricks 第5篇:Databricks文件系统(DBFS)

    Databricks 文件系统 (DBFS,Databricks File System) 是一个装载到 Azure Databricks 工作区的分布式文件系统,可以在 Azure Databric ...

  6. JavaScript 获取当天0点以及当前时间方法

    js 取得今天0点: const start = new Date(new Date(new Date().toLocaleDateString()).getTime()); console.log( ...

  7. 根据业务摸索出的一个selenium代码模版(python)

    前言 总算入行上班几个月了,不得不说业务是真的不消停啊.. 本人工作上经常遇到一种场景:为甲方做自动化接口处理工具,登录需要短信验证码,, 嘛算是摸索出了一套selenium代码模板,主要解决如下痛点 ...

  8. session、cookie、token的区别

    从安全性优先级来说: 1.优先级 Cookie<session<token 2. 安全性 Cookie: ①cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺 ...

  9. 【Spring】Spring的事务管理 - 1、Spring事务管理概述(数据库事务、Spring事务管理的核心接口)

    Spring事务管理概述 文章目录 Spring事务管理概述 数据库事务 什么是Spring的事务管理? Spring对事务管理的支持 Spring事务管理的核心接口 Platform Transac ...

  10. kubernets之pod简介

    一  k8s集群里面的最小单位是pod 1.1 一个较为简单的pod的配置文件 apiverson: api的版本号 kind: 资源的种类 metadata: pod的种类等相关信息 spec: p ...