转载自:

MyBatis传入多个参数的问题

mybatis传递参数总结

一、单个参数

1、基本数据类型

(1)直接使用

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

(2)使用注解       

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

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

(1)直接使用

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

(2)使用注解

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

二、多个参数

1、基本数据类型

(1)直接使用

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

(2)使用注解

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

三、Map封装多参数:  

public List<XXXBean> getXXXBeanList(HashMap map);  

<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">

  select 字段... from XXX where id=#{xxId} code = #{xxCode}  

</select>  

其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。 

 四、List封装in:

public List<XXXBean> getXXXBeanList(List<String> list);  

<select id="getXXXBeanList" resultType="XXBean">
  select 字段... from XXX where id in
  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
    #{item}
  </foreach>
</select> 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. Mac终端主题Peppermint

    Peppermint主题下载 下载地址:https://noahfrederick.com/log/lion-terminal-theme-peppermint 配置颜色: 1.写配置文件 vim ~ ...

  2. 统计MSSQL数据库中所有表记录的数量

    SELECT a.name as '表名', b.rows as '记录数' FROM sysobjects AS aINNER JOIN sysindexes AS b ON a.id = b.id ...

  3. 在 Windows 上安装 TensorFlow(转载)

    在 Windows 上安装 TensorFlow windows下配置安装Anaconda+tensorflow Spyder——科学的Python开发环境 Windows7 安装TensorFlow ...

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

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

  5. Eclipse Java 构建路径

    Eclipse Java 构建路径 设置 Java 构建路径 Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通 ...

  6. git commit --amend用法

    提交信息很长时间内会一直保留在你的代码库(code base)中,所以你肯定希望通过这个信息正确地了解代码修改情况. 下面这个命令可以让你编辑最近一次的提交信息,但是你必须确保没有对当前的代码库(wo ...

  7. c# 扩展方法奇思妙用基础篇八:Distinct 扩展

    刚看了篇文章 <Linq的Distinct太不给力了>,文中给出了一个解决办法,略显复杂. 试想如果能写成下面的样子,是不是更简单优雅 var p1 = products.Distinct ...

  8. Marple表演电影字幕

    119501:15:59,702 --> 01:16:02,782我的幸运死了 而我很清楚是谁杀了她的 (格雷格)My Lucky is dead, and I know perfectly w ...

  9. Mac下使用安装MongoDB

    1.安装方法1:Mac电脑上面安装很简单,直接下载需要的版本解压即可: 下载网址 https://www.mongodb.com/download-center?jmp=nav#community 方 ...

  10. 如何使用NSOperations和NSOperationQueues

    原文地址: http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues 本文由 大侠自来也(泰然教 ...