12.MyBatis学习--映射文件_参数处理_单个参数&多个参数&命名参数

mybatis 默认参数名#{0}、#{arg0}、#{param1},以及@Param 前言 略 @Param指定参数名 mapper: User getUserByIdAndName(@Param("id") int id,@Param("name") String name); xml: <select id="getUserByIdAndName" parameterType="Map" resultType="com.model.User"> select * from user where id = #{id} and name=#{name} </select 阅读详情
【单个参数】:mybatis不会做特殊处理,
         #{参数名/任意名}:取出参数值。
【多个参数】:mybatis会做特殊处理。
				多个参数会被封装成 一个map,
									key:param1...paramN,或者参数的索引也可以
									value:传入的参数值
				#{}就是从map中获取指定的key的值;

异常:
org.apache.ibatis.binding.BindingException: 
Parameter 'id' not found. 
Available parameters are [1, 0, param1, param2]
操作:
	方法:public Employee getEmpByIdAndLastName(Integer id,String lastName);
	取值:#{id},#{lastName}

【命名参数】:明确指定封装参数时map的key;@Param("id")
多个参数会被封装成 一个map,
	key:使用@Param注解指定的值
	value:参数值
#{指定的key}取出对应的参数值

总结:

POJO:
如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo;
#{属性名}:取出传入的pojo的属性值

Map:
如果多个参数不是业务模型中的数据,没有对应的pojo,不经常使用,为了方便,我们也可以传入map
#{key}:取出map中对应的值
示例:

  1. 接口方法
  public Employee getEmpByMap(Map<String,Object> map);
  1. sql映射文件
<select id="getEmpByMap" resultType="com.fzl.mybatis.bean.Employee" databaseId="mysql">
        select * from tbl_employee where id =#{id} and last_name = #{lastName}
	</select>
  1. 测试
@Test
    public void test06() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession openSession = sqlSessionFactory.openSession(true);
        try{
            EmployeeMapper employeeMapper = openSession.getMapper(EmployeeMapper.class);
            Map<String,Object> map = new HashMap<>();
            map.put("id",1);
            map.put("lastName","tom");
            Employee employee = employeeMapper.getEmpByMap(map);
            System.out.println(employee);
        }finally{
            openSession.close();
        }
    }
  1. 测试结果
    在这里插入图片描述

TO:
如果多个参数不是业务模型中的数据,但是经常要使用,推荐来编写一个TO(Transfer Object)数据传输对象
Page{
int index;
int size;
}

示例;
	public Employee getEmp(@Param("id")Integer id,String lastName);
	取值:id==>#{id/param1}   lastName==>#{param2}

public Employee getEmp(Integer id,@Param("e")Employee emp);
	取值:id==>#{param1}    lastName===>#{param2.lastName/e.lastName}

##特别注意:如果是Collection(List、Set)类型或者是数组,
		 也会特殊处理。也是把传入的list或者数组封装在map中。
			key:Collection(collection),如果是List还可以使用这个key(list)
				数组(array)
public Employee getEmpById(List<Integer> ids);
	取值:取出第一个id的值:   #{list[0]}

结合源码,mybatis怎么处理参数

总结:参数多时会封装map,为了不混乱,我们可以使用@Param来指定封装时使用的key;

#{key}就可以取出map中的值;

(@Param("id")Integer id,@Param("lastName")String lastName);

ParamNameResolver解析参数封装map的;
在这里插入图片描述
在这里插入图片描述

滤波算法-呼吸心跳信号检测方法(四) 呼吸心跳信号检测系列文章:信号滤波处理 阅读详情

相关推荐

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1902

mybatis参数处理

单个参数mybatis不会做特殊处理 #{参数名}:取出参数 eg:public Employee getEmpById(@Param("id")Integer id); //取:id-&gt;#{id} 多个参数mybatis会做特殊处理,将多个参数会被封装成一个map, key:param1…paramn,或者参数索引 value:传入的 #{}就是从map中取得指定key...

Anjihua的博客 310

第六次全国人口普查各地级市数据.zip

第六次全国人口普查各地级市数据.zip

mybatis中xml文件的#{param1}和#{属性名},比如#{id}的使用环境以及使用的时机情况

在刚接触mybatis的时候 ,有很多人经常搞不懂#{param1}和#{属性名}这两个的使用,到底是什么情况下使用哪个,下面进行解答 基础数据类型使用#{param1},比如我们在后台直接输入就可以传输到xml中,这种需要用到#{param1},如下图:直接输入6 不是基础类型的使用#{属性名},这个时候,后台传入的可能是实体对象或者map,,比如: ...

秃头的博客 1219

Mybatis)动态Sql

1、if 标签:需要做非空检验 &amp;lt;!-- 动态sql查询 --&amp;gt; &amp;lt;select id=&quot;findUserByUsernameAndSex&quot; parameterType=&quot;com.jadan.pojo.User&quot; resultType=&quot;com.jadan.pojo.User&quot;&amp;gt; select * from user where 1 = 1 &amp;lt;if t...

Jadan-Z的博客 1034

mybatis映射文件,获取自增主键的多个参数命名参数的形式,参数处理#与$的区别

&lt;!--获取自增主键的: mysql支持自增主键,自增主键的获取,mybatis也是利用statement.getGenreatedKeys() userGenerateKeys="true";使用自增主键获取主键策略 keyProperty:指定对应的主键属性,也就是mybatis获取到主键以后,将这个封装给javaBean的哪个属性 --&gt; &lt;insert id="addEmp" useGeneratedKeys="true" keyP.

qq_44772414的博客 2万+

MyBatis映射文件的使用

MyBatis映射文件的使用

m0_69044845的博客 9013

(五)Mybatis当中xml映射文件参数传递的方式

这篇文章主要讲述Mybatis当中xml映射文件参数传递的方式,本篇文章主要来源于官方文档整理,对大家的学习或者工作具有一定的参考学习,需要的朋友们下面随着小编来一起学习学习吧。 首先需要知道的是不管他传入的是单个参数还是多个参数Mybatis内部当中都是以Map形式给我们传递到映射文件当中的。 1、单个参数 mybatis不会做特殊处理,#{参数名/任意名}:取出参数。 接口单个参数名称为lastName1,而xml当中使用 #{任意名称} 照样可以接到 public Employee getE

怪咖@的博客 2946

Mybatis映射文件中获取单个参数多个参数的写法

Mybatis对于只有一个参数的情况下,不会做任何处理,其实在getOneUser方法中,我们传递过来一个id作为参数,xml文件中我们用#{id}来接收,因为只有一个参数实质上#{}里可以是任何字符串都可以,当然为了对应我们建议就用id。的形式来获取传过来的,当然你说我要查询的数据不是我们model包里的任何一个POJO呢?,直接传递对象过来就像上面的 addUser方法一样,在xml文件里直接用。1.单个参数,比如上面的getOneUser,只有一个id作为参数。#{Map的key}

学习笔记,人工智能,教程,技术分享! 567

Mybatis学习-6》mybatis映射文件参数处理

单个参数 mybatis不会做特殊处理 ,查询时名字是不影响的(sql语句中的参数名和接口中方法的参数名可以不同) #{}:取出参数 多个参数 mybatis 会做特殊处理多个参数会被分装成一个map key: param1....paramN,或者参数的索引也可以(0,1,2,,,,N) value:传入的参数 #{}就是从map中获取指定的key的 ...

Java是世界上最好的语言 336

Mybatis对各种参数处理

. Mybatis参数处理 在正常的开发中,参数可能是单个参数,也可能是多个参数,也可能是实体类的对象,这些是较常见的,还有一些特殊的,比如参数是map键对,是list,除了map和list之外还有其他的多个参数。 ①单个参数(Integer empId):单个参数MyBatis不会做任何特殊处理,在SQL映射文件中使用任意的参数名称都可以取得该参数多个参数(String empName,Integer pageCurrent,Integer pageSIze): 首先我们测试一下多个参数,看情况

哈哈哈 1149

带你学习MybatisMybatis映射文件

补全预编译语句,调用PreparedStatement的set方法来赋,有效的防止Sql语句注入,这种取是编译好SQL语句再取。很多情况下使用map作为返回是可以支持的,但是map不是一个很好的领域模型,在获取到数据库结果之后,还需要再去人工的从map中取给业务需要的字段去赋,是一件痛苦而繁琐的事情。使用PO进行接收结果集时,考虑到数据库中的列名可能与po中的字段名不一致,需要为每个字段起别名,sql写起来就变长了很多。{}直接替换成变量的,不做任何转换,这种是取以后再去编译SQL语句。

Lxn2zh的博客 1687

mybatis映射文件-参数处理

参数传递 1.单个参数:public Employee getEmpById(Integer id); mybatis不会做特殊处理 #{参数名/任意名}:取出参数。 2.多个参数:public Employee getEmpById(Integer id,String lastName); mybatis会做特殊处理多个参数会被封装成 一个map, key:param1...pa...

abcd041021的博客 229

Mybatis映射文件规则

在说明映射文件规则之前,先来回顾一下ORM相关概念。 1.ORM概念 ORM(Object Relationship Mapping)对象关系映射 对象:Java的实体类对象 关系:关系型数据库 映射:二者之间的对应关系 字段名和属性名要一一对应才可以,它们的名字要相同,底层调用的是反射机制 Java概念 数据库概念 属性 列,字段 对象 记录 类 表 2.映射文件命名规则 表对应的实体类的类名+Mapper.xml 举例:假如数据库的表的名字是t_user,它对应的实体类是Us

梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记 3767

mybatis-xml文件中传入数组取指定位置元素

说明:list为入参对象的一个String[]类型的属性 #{list.[0]}

weixin_39293537的博客 3982

Mybatis之@Param注解源码解析

@Param源码解析,通俗易懂

Laptoy的博客 709

java mybatis 如何获取list的第一个

如果列表集合是多个的情况下精准搜素,单个的情况下是模糊搜索。这个时候就需要在mybatis中获取列表集合的第一个。在某些特定的场景下,可能需要传多个,假设这个参数是list 那么取就是list[0]

记录个人成长, 分享好用资源 2824

MyBatis SQL语句参数注解详释

Mybatis写SQL语句的时候,避免不了参数的传入。通常情况下,参数的传入可以分为两大类: 1、使用@Param注解 2、不使用@Param注解 下面详细介绍这两种方式的参数传递规则: 一、不使用@Param注解   1、接口方法只有一个参数    1) 参数为基本类型或为基本包装类型(int,Integer,String...)              参数注释为: #{任意...

西木风落 2502

MyBatis-@param注解详解

@param参数注解 一、@Param注解单一属性 dao层示例 Public User selectUser(@param(“userName”) String name,@param(“userpassword”) String password); xml映射对应示例 &amp;amp;amp;amp;amp;amp;amp;amp;lt;select id=&amp;amp;amp;amp;amp;amp;amp;quot; selectUser&amp;amp;amp;amp;amp;amp;a

xuonline4196的博客 2万+

Mybatis参数处理

单个参数mybatis不会做特殊处理,直接#{参数名} 取出参数 多个参数mybatis会做特殊处理. 多个参数会被封装成一个map, key:param1...paramN value:传入参数 异常:org.apache.ibatis.binding.BindingException: Parameter ...

小杰瑞_ 249
上一篇: 11.MyBatis学习--映射文件_insert_获取非自增主键的值_selectKey
下一篇: 13.MyBatis报错:Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter
Adela0916
博客等级 码龄8年 12粉丝 89原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值