转载自:

MyBatis传入多个参数的问题

mybatis传递参数总结

一、单个参数

1、基本数据类型

(1)直接使用

  1. List<ChargeRuleDO> tests(long id);
  2.       <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
  3.         select * from t_charge_rule t where t.id = #{id}
  4.       </select>
  5.       #{}中的参数名与方法中的参数名一致

(2)使用注解       

  1. List<ChargeRuleDO> tests(@Param("aid") long bid);
  2.       <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
  3.         select * from t_charge_rule t where t.id = #{aid}
  4.       </select>
  5.       #{}中的参数名与方法中的@Param()里的参数名一致

2、复杂数据类型(这里主要是指java实体类)

(1)直接使用

  1. List<ChargeRuleDO> tests(TestQO testQO);
  2.       <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
  3.         select * from t_charge_rule t where t.id = #{id} and t.rule_type=#{ruleType}
  4.       </select>
  5.       #{}中的参数名与方法中的参数的属性名一致

(2)使用注解

  1. List<ChargeRuleDO> tests(@Param("atestQO") TestQO btestQO);
  2.       <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
  3.         select * from t_charge_rule t where t.id = #{atestQO.id} and t.rule_type=#{atestQO.ruleType}
  4.       </select>
  5.       #{}中的参数名与方法中的@Param()里的参数对应的属性名一致,而且必须写成"#{atestQO.id}"的格式,不能简写成"#{id}".

二、多个参数

1、基本数据类型

(1)直接使用

  1. List<ChargeRuleDO> tests(long id,String ruleType);
  2.       <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
  3.         select * from t_charge_rule t where t.id = #{0} and t.rule_type=#{1}
  4.       </select>
  5.       这里改用#{index},其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。

(2)使用注解

  1. List<ChargeRuleDO> tests(@Param("id") long id,@Param("ruleType") String ruleType);
  2.       <select id="tests" resultType="com.xxx.bean.ChargeRuleDO">
  3.         select * from t_charge_rule t where t.id = #{id} and t.rule_type=#{ruleType}
  4.       </select>
  5.       #{}中的参数名与方法中的@Param()里的参数名一致

三、Map封装多参数:  

  1. public List<XXXBean> getXXXBeanList(HashMap map);
  2.  
  3. <select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">
  4.  
  5.   select 字段... from XXX where id=#{xxId} code = #{xxCode}
  6.  
  7. </select>
  8.  
  9. 其中hashmapmybatis自己配置好的直接使用就行。mapkey的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。

 四、List封装in:

  1. public List<XXXBean> getXXXBeanList(List<String> list);
  2.  
  3. <select id="getXXXBeanList" resultType="XXBean">
  4.   select 字段... from XXX where id in
  5.   <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
  6.     #{item}
  7.   </foreach>
  8. </select>
  9.  
  10. foreach 最后的效果是select 字段... from XXX where id in ('1','2','3','4')

 

      

    
      

Mybatis参数总结(转载)的更多相关文章

  1. (转载)深入了解MyBatis参数

    原文地址:http://blog.csdn.net/isea533/article/details/44002219 深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Pa ...

  2. MyBatis参数绑定规则及原理分析

    MyBatis参数的传递有几种不同的方法,本文通过测试用例出发,对其中的方式进行总结和说明,并对其部分源码进行分析. 一.测试用例(环境参考之前博客SSM接口编程一文 http://www.cnblo ...

  3. mybatis 参数为list时,校验list是否为空, mybatis ${}与#{}的区别,Mybatis sql in

    1.mybatis 参数为list时,校验list是否为空 2. mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * fr ...

  4. mybatis 参数为String,用_parameter 取值

    mybatis 参数为String,if test读取该参数代码: <select id="getMaxDepartId" parameterType="java. ...

  5. Mybatis参数预编译

    Mybatis参数预编译 一.数据库预编译介绍 1.数据库SQL语句编译特性: 数据库接受到sql语句之后,需要词法和语义解析,优化sql语句,制定执行计划.这需要花费一些时间.但是很多情况,我们的一 ...

  6. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)【转载】

    最近在学习Spring+SpringMVC+MyBatis的整合.以下是参考网上的资料自己实践操作的详细步骤. 1.基本概念   1.1.Spring Spring是一个开源框架,Spring是于20 ...

  7. SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)(转载)

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  8. 建造者模式组装mybatis参数Example()

    参考:github,   https://github.com/liuxiaochen0625/MyBatis-Spring-Boot-master.git 从controller组装tk.mybat ...

  9. MyBatis参数传入集合之foreach用法

    传入集合list // 账户类型包括门店和分公司 List<Object> scopeList = new ArrayList<Object>(); scopeList.add ...

随机推荐

  1. 使用caffe 的 python接口测试数据,选定GPU编号

    只需要在python脚本中添加两行代码: caffe.set_device(0) #使用第一块显卡 caffe.set_mode_gpu() #设为gpu模式 这样,就可以在默认显卡被占用(第一块显卡 ...

  2. IIS如何添加m3u8流媒体类型

    m3u8,mime类型填写: application/x-mpegURL. ts ,mime类型填写: video/MP2T

  3. Apache优化提高并发数量

    问题: 我们用lvs做了负载均衡.使用了两台server做login的服务.以及二次资源下载服务.可是在推广过程中.陆续有人反映server登录困难. 解决过程: 1.首先我们查看流量日志以及serv ...

  4. C语言基础(14)-递归

    一. 递归的定义 函数可以调用自己,这就叫函数的递归. 先序递归和后序递归 #include <stdio.h> void test(int n); void test1(int n); ...

  5. python简单C/S模式示例

    服务器端代码: #!/usr/bin/python import time, socket, threading # thread handle function def tcplink(sock, ...

  6. JME的flyCam和cam的区别

    http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:camera 注意这句话: The flyCam class field gives ...

  7. SVN常见问题(转)

    svn常见问题,报错,命令及我的总结 (2013-07-19 18:07:27) 转载▼     我自己犯过的一个错误是:/svn/MyERP_core_Main/!svn/act/b8bd621b- ...

  8. UVA 679 Dropping Balls 由小见大,分析思考 二叉树放小球,开关翻转,小球最终落下叶子编号。

    A number of K balls are dropped one by one from the root of a fully binary tree structure FBT. Each ...

  9. 配置LANMP环境(5)-- 安装NGINX与配置

    安装nginx yum install nginx 若提示找不到nginx,则在软件源中添加nginx的软件源文件: vim /etc/yum.repos.d/nginx.repo 添加如下内容: [ ...

  10. Photoshop脚本之获得文件夹下所有特定后缀文件

    function getAllFiles(folderName,houzhui){ folderName var regthis = new RegExp( '.+\.('+houzhui+')$', ...