Dao层传递参数到mapping.xml文件的几种方式:(Mybatis传值总结)

第一种:传递单个参数

Dao层Code片段:

  1. /**
  2. * 根据articleId查询XXXX详情.
  3. *
  4. * @param articleId
  5. * @return {@link CmsProductArticle}
  6. */
  7. public CmsProductArticle getCmsProductArticleByArticleId(Long articleId);

Mapping片段:

  1. <select id="getCmsProductArticleByArticleId" parameterType="Long" resultType="xxx.xxxxx.xxx.xxxxx.xxx.CmsProductArticle">
  2. SELECT
  3. *
  4. FROM
  5. tableA a, tableB b
  6. WHERE
  7. a.article_id = b.article_id
  8. and a.del_flag != 2
  9. and b.article_id = #{articleId}
  10. </select>

传递单个参数时直接将parameterType设置成你传入的参数类型(Long),直接用“#{}”获得参数,参数名必须与Dao层参数名一致。

resultType是SQL查询结果返回的类型,Dao层接口返回是实体类,所以这里的resultType是实体类的路径(按住ctrl键,鼠标点击路径时可以直接进入实体类时路径正确)

第二种:传递多个参数

1,以注解标记

Dao层Code片段:

  1. /**
  2. * 查询companyId是否存在.
  3. *
  4. * @param companyId
  5. * @param imgId
  6. * @return int
  7. */
  8. public int queryCompanyIdAndImgIdIsExist(@Param("companyid") Long companyId, @Param("id") Long imgId);

Mapping片段:

  1. <select id="queryCompanyIdAndImgIdIsExist" resultType="Integer">
  2. select
  3. count(1)
  4. from table_img img
  5. where img.company_id = #{companyid}
  6. and img.id = #{id}
  7. </select>

此时不需要写parameterType,但是注意“#{}”内的参数名必须跟你在Dao层中注解@Param("")内定义的名称一致。

2,直接传递参数

Dao层Code片段:

  1. /**
  2. * 查询companyId是否存在.
  3. *
  4. * @param companyId
  5. * @param imgId
  6. * @return int
  7. */
  8. public int queryCompanyIdAndImgIdIsExist( Long companyId,  Long imgId);

Mapping片段:

  1. <select id="queryCompanyIdAndImgIdIsExist" resultType="Integer">
  2. select
  3. count(1)
  4. from table_img img
  5. where img.company_id = #{0}
  6. and img.id = #{1}
  7. </select>

#{0}与#{1}是你在Dao里的参数顺序

3,以Map传递参数

实现类Code片段:

  1. Map<String,Object> searchCondition = new HashMap<>();
  2. searchCondition.put("categoryId", categoryId);
  3. searchCondition.put("status", status);
  4. List<CmsProductArticle> cmsProductArticles = cmsProdcutArticleDao.getCmsProductArticles(searchCondition);

Dao层Code片段:

  1. /**
  2. * 根据搜索条件查询产品模板集.
  3. *
  4. * @param searchCondition
  5. * @return List<CmsProductArticle>
  6. */
  7. public List<CmsProductArticle> getCmsProductArticles(Map<String, Object> searchCondition);

Mapping片段:

  1. <select id="getCmsProductArticles" parameterType="java.util.Map" resultType="xxx.xxxxxxx.xxx.xxxxx.xxxxxxx.CmsProductArticle">
  2. SELECT
  3. *
  4. FROM
  5. table a, table b
  6. WHERE
  7. a.article_id = b.article_id
  8. and a.del_flag != 2
  9. <if test="categoryId != null">
  10. and a.category_id = #{categoryId}
  11. </if>
  12. <if test="status != null">
  13. and a.status = #{status}
  14. </if>
  15. </select>

#{categoryId}、#{status}对应你在Map里面的Key

第三种:以实体类传递

Dao层Code片段:

  1. /**
  2. * 更新.
  3. *
  4. * @param cmsProductArticle
  5. * @return
  6. */
  7. public void updateCmsProductArticle(CmsProductArticle cmsProductArticle);

Mapping片段:

  1. <update id="updateCmsProductArticleBase" parameterType="xxx.xxxxxxx.xxx.xxxxx.xxxxxxx.CmsProductArticle">
  2. UPDATE table
  3. SET
  4. category_id = #{categoryId}, supply_type = #{supplyType}, pay_type = #{payType}, pay_value = #{payValue}, status = #{status}
  5. WHERE
  6. article_id = #{articleId}
  7. and del_flag != 2
  8. </update>

#{categoryId}等对应实体类中属性。

MyBatis DAO层传递参数到mapping.xml 几种方式的更多相关文章

  1. mybatis传递参数到mapping.xml

    第一种方案 ,通过序号传递 DAO层的函数方法 Public User selectUser(String name,String area); 对应的Mapper.xml <select id ...

  2. SpringMVC 页面传递参数到controller的五种方式

    一共是五种传参方式: 一:直接将请求参数名作为Controller中方法的形参 public  String login (String username,String password)   : 解 ...

  3. MyBatis Dao层的编写

    传统的dao层编写 以前编写dao层,先新建一个包com.chy.dao,再写接口StudentDao: public interface StudentDao { public void inser ...

  4. MyBatis dao层 方法传参

    MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled">       INSER ...

  5. js setTimeout 传递带参数的函数的2种方式

      js setTimeout 传递带参数的函数的2种方式 Created by Marydon on 2018年9月14日 1.准备工作 function sayYourName(param) { ...

  6. mybatis3.1-[topic-18-20]-_映射文件_参数处理_单个参数&多个参数&命名参数 _POJO&Map&TO 三种方式及举例

    笔记要点出错分析与总结 /**MyBatis_映射文件_参数处理_单个参数&多个参数&命名参数 * _POJO&Map&TO 三种方式及举例 _ * 单个参数 : #{ ...

  7. Mybatis Dao层注解及XML组合Dao的开发方式

    mybatis可以用xml进行数据操作,也可以在dao层用注解的方式,也可以采取xml和dao层接口组合使用的方法.显然 ,后者更加简单. 实体类Student   package com.zhao. ...

  8. [MyBatis]DAO层只写接口,不用写实现类

    团队开发一个项目,由老大架了一个框架,遇到了DAO层不用写接口了,我也是用了2次才记住这个事的,因为自己一直都是习惯于写DAO层的实现类,所以,习惯性的还是写了个实现类.于是遇到错误了. 找不到那个方 ...

  9. 基于dbunit进行mybatis DAO层Excel单元测试

    DAO层测试难点 可重复性,每次运行单元测试,得到的数据是重复的 独立性,测试数据与实际数据相互独立 数据库中脏数据预处理 不能给数据库中数据带来变化 DAO层测试方法 使用内存数据库,如H2.优点: ...

随机推荐

  1. python 向qq邮箱发邮件

    #coding:utf-8 ''' Created on 2017-1-12 @author: xiaochun ''' import smtplib from email.mime.text imp ...

  2. (转)引用---FFMPEG解码过程

    视频播放过程 首先简单介绍以下视频文件的相关知识.我们平时看到的视频文件有许多格式,比如 avi, mkv, rmvb, mov, mp4等等,这些被称为容器(Container), 不同的容器格式规 ...

  3. Oracle-05-SQL语句概述、分类&amp;SQL*PLUS概述(初识insert,desc,list,r,del,a,c,n等命令)

    一.SQL语句概述 (1)SQL全程是"结构化查询语言(Structured Query Language)". SQL是大多数主流数据库系统採用的标准查询语言. (2)SQL语句 ...

  4. [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)

    Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 30512   Accep ...

  5. 第一个OC程序

    第一个OC程序源码如下: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @auto ...

  6. 修改查看MYSQL字符集(charset)

    From: http://www.cnblogs.com/fengqingtao/archive/2010/11/23/1885220.html 查看mysql的字符集 mysql> show ...

  7. 解决 SharePoint 2010 拒绝访问爬网内容源错误的小技巧(禁用环回请求的两种方式)

    这里有一条解决在SharePoint 2010搜索爬网时遇到的“拒绝访问错误”的小技巧. 首先要检查默认内容访问帐户是否具有相应的访问权限,或者添加一条相应的爬网规则.如果目标资源库是一个ShareP ...

  8. ubuntu设置中文拼音输入法

    转载  http://www.cnblogs.com/zhj5chengfeng/archive/2013/06/23/3150620.html

  9. Visual Studio 2013 离线版msdn下载和安装

    Visual Studio 2013出来后,并没有自带msdn安装包,而变成了在线安装msdn,好处是msdn可以随时进行更新,坏处是难道以后每次重新安装系统,都需要重新下载吗,如何解决这个问题呢?本 ...

  10. VS------csc.exe已停止工作解决方法

    转载: http://blog.csdn.net/verylost/article/details/53667769 方法: 解决方法是把进程中所有的VBCSCompiler.exe进程结束掉,然后清 ...