引言

目前,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. 软件工程UML第一次作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/f ...

  2. Hive日期函数总结(转学习使用)

    一.时间戳函数 1.获取当前时区的UNIX时间戳:select unix_timestamp(); 2.将指定时间转为UNIX时间戳: select unix_timestamp('2012-03-0 ...

  3. Lesson_strange_words1

    time-between system 分时操作:分时系统 secondary 辅助的,从属的 establish 已确立的 capability 功能 formerly 之前的 combine 结合 ...

  4. STP、PVST、MST协议

    • STP:生成树协议        ○ 阻止环形链路的广播风暴    • PVST:VLAN生成树        ○ 是STP的进阶版不仅能阻止广播风暴,还可以做到基于VLAN进行流量均衡.     ...

  5. java之环境配置

    前言:本人环境 Windows10(64位),jdk1.8.131 开发工具: IDEA 第一步: 获取JDK 方法一:推荐官网(此方法需要oracle账号,可以免费注册)   方法二:百度网盘(需要 ...

  6. 【SpringBoot1.x】SpringBoot1.x 开发热部署和监控管理

    SpringBoot1.x 开发热部署和监控管理 热部署 在开发中我们修改一个 Java 文件后想看到效果不得不重启应用,这导致大量时间花费,我们希望不重启应用的情况下,程序可以自动部署(热部署). ...

  7. Maven学习笔记之第一个Maven项目(Linux)

    Maven是Apache旗下的管理Java项目jar包的项目管理工具,有了它可以很方便构建和管理我们的Java项目,你不必在互联网上逐个查找你需要的第三方jar包,你只需在maven reposito ...

  8. 【Docker】1、 前后端分离项目 下载启动运行

    人人开源前后端分离项目下载与配置 文章目录 人人开源前后端分离项目下载与配置 前后端分离框架介绍 后端项目下载与配置 1.renren-fast后台项目介绍 2.开发环境搭建 3.下载后端renren ...

  9. 【UML】Use Case Diagrams

    文章目录 Use Case Diagrams Introduction Use case Diagram Use Case Diagrams - Actors Use Case Diagrams – ...

  10. C#使用ODP.NET连接oracle数据库

    ODP.NET:Oracle Data Provider for .NET 分为三种: ODP.NET, Managed Driver 不需要安装oracle客户端 ODP.NET,Unmanaged ...