不管我们在做数据库作业或者任务还是当时的仅靠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

最新文章

  1. Android中使用AsyncTask实现文件下载以及进度更新提示
  2. oracle表空间不足时的处理方法
  3. Selenium Webdriver元素定位的常用方式
  4. IPv4中IP地址分类
  5. 将List&lt;int&gt; 转换为用逗号连接为字符串
  6. json-encode()怎么进行解码呢?
  7. input与lable水平对齐
  8. android 判断网络是否连接
  9. Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
  10. SCOI2009生日快乐
  11. Java---多线程之死锁
  12. Lua语法要点
  13. DirectSound---简易Wav播放器
  14. 【一天一道LeetCode】#90. Subsets II
  15. 关于Vue.use()使用详解
  16. OpenStack源码分析 Neutron源码分析(一)-----------Restful API篇
  17. git [command line] fatal: Authentication failed for
  18. 一篇关于CountDownLatch的好文章
  19. iOS 系统通知
  20. Linux:【解决】无法连接 MKS:套接字连接尝试次数太多正在放弃

热门文章

  1. Django ORM 之F、Q查询与事务
  2. lds 文件说明
  3. .net 裁剪图片
  4. sql(2) DISTINCT
  5. .net下MVC中使用Tuple分页查询数据
  6. 专访阿里云MVP黄胜蓝:90 后 CTO花了6年,改变了你日常生活里的这件事
  7. 最大流拆点——hdu2732,poj3436
  8. 【题解】P1440 均分纸牌
  9. iOS开发之SceneKit框架--加载多个模型.dae/.scn文件
  10. 更改网卡名称以及重启网卡提示Determining if ip address x.x.x.x is already in use for device eth0