MyBatis框架使用 —— 传递多个参数的方式
引言
目前,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框架使用 —— 传递多个参数的方式的更多相关文章
- Mybatis接口中传递多个参数
1.接口 public interface MemberMapper { public boolean insertMember(Members member); public Members sel ...
- Mybatis框架基础入门(三)--Mapper动态代理方式开发
使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...
- Mybatis中select传递多个参数
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- mybatis之parameterType传递多个参数
当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...
- java mybatis 框架下多种类型的参数传入到xml问题
由于公司要求,最近从.net向java 转,然后过程中遇到各种奇葩问题,特在此随记一番. 场景:一个方法中有两个参数,一个List的集合,一个int 类型的参数,最初我在xml的sql参数,无论定义成 ...
- Mybatis框架基于映射文件和配置文件的方式,实现增删改查,可以打印日志信息
首先在lib下导入: 与打印日志信息有关的架包 log4j-1.2.16.jar mybatis架包:mybatis-3.1.1.jar 连接数据库的架包:mysql-connector-java-5 ...
- Mybatis框架进行批量导入和删除有三种方式
首先创建一个数据库 CREATE TABLE user ( id varchar(32) CHARACTER SET utf8 NOT NULL, name varchar(50) CHARA ...
- Mybatis 传递多个参数
Mybatis提供了4种传递多个参数的方法: 1 Map sql语句 接口 调用方法 这个方法虽然简单易用,但是存在一个弊端:Map存储的元素是键值对,可读性不好. 2 注解 使用MyBatis的参数 ...
- MyBatis DAO层传递参数到mapping.xml 几种方式
Dao层传递参数到mapping.xml文件的几种方式:(Mybatis传值总结) 第一种:传递单个参数 Dao层Code片段: /** * 根据articleId查询XXXX详情. * * @par ...
随机推荐
- java枚举类学习笔记总结
枚举类的说明: 1.枚举类的理解:类的对象只有有限个,确定的.我们称此类为枚举类 2.当需要定义一组常量时,强烈建议使用枚举类 3.如果枚举类中只一个对象,则可以作为单例模式的实现方式. 如何自定义枚 ...
- ES6 浅谈Reflect
Reflect 属于一个静态类,不能通过new的方法去创建实例,只能调用静态类中的一些静态方法,Reflect内部封装了一系列对对象的底层操作, Reflect 成员方法就是Proxy处理对象的默认实 ...
- MySQL安装8.0图文教程。超级详细
数据库安装 1.官网下载 接下来点击不用登录注册 2.安装 点击安装服务端 ,然后点击下一步 选择自己安装目录(一定要牢记)这里我选择默认目录,点击下一步 这里弹出警告,直接点击yes 直接点击exe ...
- java反射-Method中的invoke方法的用法-以及函数式接口和lambda表达式
作者最近研究框架底层代码过程中感觉自己基础不太牢固,于是写了一点案例,以防日后忘记 接口类:Animals 1 public interface Animals { 2 3 public void e ...
- 【Software Test】Introduction to Software Testing
Introduction to Software Testing 文章目录 Going to Learn --. Evolution of The Software Industry Errors, ...
- 20V,24V转5V,20V,24V转3.3V降压芯片,IC介绍
常用的20V和24V转5V,3.3V的LDO稳压和DC-DC降压芯片: PW6206系列是一款高精度,高输入电压,低静态电流,高速,低压降线性稳压器具有高纹波抑制.输入电压高达40V,负载电流高达10 ...
- Windows下的python虚拟环境设置
Windows下的python虚拟环境设置: virtualenv 在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲 ...
- 错误捕捉过滤器 .NetCore版
前言 继承ExceptionFilterAttribute后,重写OnException函数. 统一捕捉所有报错,格式化返回前端. 代码实现 基类控制器 在基类控制器上添加[ErrorCatch]特性 ...
- 02. struts2中Action名称的搜索顺序
搜索顺序 获得请求路径的URI,例如URL为:http://localhost:8080/struts2/path1/path2/path3/student.action 首先寻找namespace为 ...
- C++中输出变量类型的方法
C++中输出变量类型的方法 在c++中输出变量或者数据类型,使用typeid().name()的方法.如下例子: #include <iostream> #include <stri ...