不管我们在做数据库作业或者任务还是当时的仅靠jdbc来写一个管理系统的时候,sql语句需要一些参数,从而来实现模糊查询,精确查询,插入数据,更新数据和删除数据。这些参数,在mybatis里面,又该如何使用呢?我总结了一下五点:

  • 单个参数的绑定:

这个和上一篇的用法是一样的,我们直接在mapper文件里面用#{}代替参数,就可以完成单个参数绑定,例如代码:

mapper.xml文件:


  1. <select id="findById" resultType="Teacher">
  2. select * from teacher where tid=#{tid}
  3. </select>

在dao层的接口里面,只需要写上对应的方法:

public Teacher findById(int tid);

这样,直接用sqlsession去读取这个dao的接口,然后调用这个方法,就可以实现单个参数的传递了。

  • 多个参数绑定:

如果一个sql语句的查询条件有多个的话,就需要多个参数的绑定了。

  • 多个参数绑定:索引传递

在mapper文件中:


  1. <select id="findByNameAndCourseWithIndex" resultType="Teacher">
  2. select * from teacher where tname=#{0} and tcourse=#{1}
  3. </select>

在dao层的接口里面:

public Teacher findByNameAndCourseWithIndex(String tname,String tcourse);

这样就实现了根据索引值来传递参数的问题。

  • 多个参数绑定:注解绑定

除了索引,我们mybatis还提供了注解的方式来传递参数

mapper文件中:


  1. <select id='findByNameAndCourseWithBind' resultType="Teacher">
  2. select * from teacher where tname=#{tname} and tcourse=#{tcourse}
  3. </select>

dao层的接口:

public Teacher findByNameAndCourseWithBind(@Param("tname")String tname,@Param("tcourse")String tcourse);

可以看到,mapper文件中的#{}里面的参数,用@Param()绑定给了dao层的方法,而#{}和@Param()需要一致。这样就实现了参数通过注解的方式绑定。

  • 多个参数绑定:map绑定

利用map,来传递参数,我们知道map是一个键值对形式存储信息的集合,所以利用map也可以实现参数的绑定

mapper文件代码:


  1. <select id="findByNameAndCourseWithMap" resultType="Teacher">
  2. select * from teacher where tname=#{tname} and tcourse=#{tcourse}
  3. </select>

dao层接口文件代码:

public Teacher findByNameAndCourseWithMap(Map paramMap);

在调用接口去使用这个方法的时候,我们需要用到put()方法,来将参数传递过去,例如这里就是paramMap.put("tname","张三")这样一来,就好理解了,键值对的存在,也就形成了一个实参和形参的绑定。

  • 多个参数绑定:直接传递

和单个参数传递一样,我们可以使用直接传递的方法去传递多个参数

mapper文件:


  1. <select id="findByNameAndCourseWithObject" resultType="Teacher" >
  2. select * from teacher where tname=#{tname} and tcourse=#{tcourse}
  3. </select>

dao层接口:

这样一来,我们就也能实现一种参数的传递。

不过要注意的是,mybatis中的SQL接受的参数有基本的数据类型,对象,List,数组和Map,无论传递那种参数给mybatis,都会将参数放在一个Map中,如果传入基本类型:变量名作为key,变量值作为value 此时生成的map只有一个元素。如果传入对象: 对象的属性名作为key,属性值作为value,如果传入List: "list"作为key,这个List是value (这类参数可以迭代,利用标签实现循环)如果传入数组: "array"作为key,数组作为value(同上)如果传入Map: 键值不变。

git源码地址:https://github.com/yueyue123123/mybatisDemo.git

原文地址:https://blog.csdn.net/u010159380/article/details/82255461

mybatis第二篇—参数绑定的更多相关文章

  1. C#语法糖之第二篇: 参数默认值和命名参数 对象初始化器与集合初始化器

    今天继续写上一篇文章C#4.0语法糖之第二篇,在开始今天的文章之前感谢各位园友的支持,通过昨天写的文章,今天有很多园友们也提出了文章中的一些不足,再次感谢这些关心我的园友,在以后些文章的过程中不断的完 ...

  2. Mybatis第二篇【CRUD、分页】

    完成CRUD操作 我们在上一篇中已经简单知道了Mybatis是怎么使用的以及工作流程了,这次我们使用Mybatis来完成CRUD的操作,再次巩固Mybatis的开发步骤以及一些细节 包与类之间的结构 ...

  3. 深入理解this机制系列第二篇——this绑定优先级

    前面的话 上一篇介绍过this的绑定规则,那如果在函数的调用位置上同时存在两种以上的绑定规则应该怎么办呢?本文将介绍this绑定的优先级 显式绑定 pk 隐式绑定 显式绑定胜出 function fo ...

  4. 持久层之 MyBatis: 第二篇 :动态SQL And多表查询

    MyBatis入门到精通 完整CRUD UserDaoImpl 编写UserDao对应的UserDaoMapper.xml 添加UserDao的测试用例 编写UserDao的测试用例 解决数据库字段名 ...

  5. Vue.js学习笔记 第二篇 样式绑定

    Class绑定的对象语法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

    1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...

  7. 泛型2(lambda表达式/参数绑定)

    lambda 表达式: Lambda表达式完整的声明格式如下: [capture list] (params list) mutable exception-> return type { fu ...

  8. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  9. SpringMVC第四篇【参数绑定详讲、默认支持参数类型、自定义参数绑定、RequestParam注解】

    参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定- 默认支持的参数类型 从上面的用法我们可以发现,我们可以使用req ...

随机推荐

  1. (转)lua protobuffer的实现

    转自: http://www.voidcn.com/article/p-vmuovdgn-bam.html (1)lua实现protobuf的简介 需要读者对google的protobuf有一定的了解 ...

  2. linux 下使用scp命令传输文件

    scp -P 1234 /home/wakasann/test.txt wakasann@192.168.1.30:/var/www/html/ 使用 1234端口,将 test.txt文件传输到服务 ...

  3. css 苹方字体

    苹方-简 常规体 font-family: PingFangSC-Regular, sans-serif; 苹方-简 极细体 font-family: PingFangSC-Ultralight, s ...

  4. hibernate4.3.8的dialect和创建SessionFactory遇到的一些问题

    好久不用hibernat,心里记着的还是hibernate3的标准,今天换成hibernate4.3.8后问题层出不穷啊... 首先是hibernate4.3.8中使用mysql方言时,hiberna ...

  5. Linux命令速查手册(第2版)学习

    第1章.需要了解的命令行相关事项 表1-1 如何在文件名字符中使用特殊字符 字符 建议 / 绝不使用.不能转义 \ 必须转义.避免使用 _ 绝不能作为文件或目录名的第一个字符 [] 必须转义.避免使用 ...

  6. nginx反向代理时有无”/”的辨析

    nginx反向代理是日常使用nginx时最常用到的功能之一.在配置url的过程中,“/”的有无经常是影响我们配置成功的关键,也是困扰我们的问题所在.在此,结合实际例子,作简要辨析. 场景一:利用根目录 ...

  7. BZOJ 1040 (ZJOI 2008) 骑士

    题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...

  8. jquery学习笔记(五):AJAX

    内容来自[汇智网]jquery学习课程 5.1 ajax AJAX 是与服务器交换数据的艺术,它在不重载全部页面的情况下,实现了对部分网页的更新. AJAX = 异步 JavaScript 和 XML ...

  9. Docker系列(三):Docker自定义容器镜像

    将容器编程镜像: docker commit [repo:tag] 网上有这句话:当我们在制作自己的镜像的时候,会在container中安装一些工具.修改配置,如果不做commit保存 起来,那么co ...

  10. this关键字、static关键字、block块、封装类以及继承、import、修饰符的初步了解

    this关键字 定义 在类的方法定义中使用this关键字代表使用该方法的引用. this即"自己",代表对象本身,谁调用代表谁.在成员方法中或构造器中隐式的传递. this的两种用 ...