`

mybatis @param

 
阅读更多

总结我所用到的MyBatis,Dao层传递参数到mapping.xml文件的几种方式:

第一种:传递单个参数

Dao层Code片段:

 

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

Mapping片段:

 

 

[sql] view plain copy
 
  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片段:

 

[java] view plain copy
 
  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片段:

 

 

[java] view plain copy
 
  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片段:

 

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

Mapping片段:

 

 

[java] view plain copy
 
  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片段:

 

[java] view plain copy
 
  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片段:

 

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

 

Mapping片段:

 

[sql] view plain copy
 
  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片段:

 

[java] view plain copy
 
  1. /** 
  2.  * 更新. 
  3.  *  
  4.  * @param cmsProductArticle 
  5.  * @return  
  6.  */  
  7. public void updateCmsProductArticle(CmsProductArticle cmsProductArticle);  

Mapping片段:

 

 

[sql] view plain copy
 
  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的@param

    "浅谈为什么要使用mybatis的@param" 在 MyBatis 中,使用 @Param 注解可以给映射器方法中的参数命名,这样可以解决多个参数时的混淆问题。下面我们来详细讲解为什么要使用 @Param 注解。 首先, lets 看一个报错的...

    mybatis-demo9-方法多参数@Param.zip

    在MyBatis中,`@Param`注解是用来处理方法中多个参数的情况,尤其是在编写自定义的Mapper接口时。这个注解允许我们为每个参数指定一个唯一的名称,以便在SQL语句中引用它们。下面我们将深入探讨`@Param`的使用、作用...

    Mybatis中@Param的用法和作用详解

    Mybatis中@Param的用法和作用详解 Mybatis中@Param的用法和作用是本文的主要内容,下面我们将详细介绍@Param的用法和作用,以及与Spring中@param的使用区别。 @Param的用法 -------- 在Mybatis中,@Param注解的...

    mybatis多个接口参数的注解使用方式(@Param)

    MyBatis 多个接口参数的注解使用方式(@Param) 在 MyBatis 中,使用 @Param 注解可以实现多个接口参数的传递,这可以解决在实际开发中遇到的多个参数传递问题。本文将详细介绍 MyBatis 中多个接口参数的注解使用...

    Mybatis使用@param注解四种情况解析

    在Mybatis框架中,`@Param`注解是一个非常重要的元素,它用于给方法参数命名,使得Mybatis能够识别并正确地将Java方法的参数值映射到SQL语句中的占位符。下面我们将详细探讨`@Param`注解在四种不同情况下的使用和...

    mybatis-param-clazzStudent-222

    本主题聚焦于"Mybatis-param-clazzStudent-222",这可能是一个关于MyBatis中处理参数映射到复杂类型,如学生类(ClazzStudent)的实例。以下是对这一知识点的详细阐述: 首先,MyBatis的参数映射是其核心功能之一,...

    MyBatis注解配置映射器:一对多关系的实现

    在Java开发中,MyBatis是一个非常流行的持久层框架,它简化了数据库操作与Java对象之间的映射。本文将深入探讨如何使用MyBatis的注解配置来实现一对多关系映射,以此来提高开发效率并减少代码冗余。 首先,我们需要...

    mybatis-paramDemo.zip

    本示例 "mybatis-paramDemo" 旨在展示 MyBatis 中参数处理的各种方式,帮助开发者理解如何在 SQL 查询中传递和使用参数。下面我们将详细探讨 MyBatis 中的参数处理机制。 1. **动态 SQL**:MyBatis 的一大亮点就是...

    MyBatis学习教程(四)-如何快速解决字段名与实体类属性名不相同的冲突问题

    在MyBatis框架中,当数据库表的字段名与实体类的属性名不一致时,我们需要采取特定的方式来解决这种冲突,以确保数据的正确映射。以下是一些关键点和解决方案: 1. **别名配置**: - MyBatis允许我们在实体类中...

    ibatis-core-3.0.jar org.apache.ibatis.annotations.Param

    `org.apache.ibatis.annotations.Param`是MyBatis中的一个重要注解,用于处理方法参数映射。 `@Param`注解主要用于SQL查询中的动态参数绑定,尤其是在动态SQL语句中。在MyBatis的映射文件或者Mapper接口中,当我们...

    free-idea-mybatis.zip

    IDEA插件free mybatis plugin下载、 xml和mapper之间的有用导航 支持生成语句,@Param注释和xml的映射器 在xml中支持一些有用的mapper重命名 支持mapper xml中select语句的正确结果类型 支持mapper xml的正确...

    MybatisX-idea.0.1.0.jar

    Intellij Idea Mybatis插件主要功能: 提供Mapper接口与配置文件中对应SQL的导航 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL标签 ResultMap中的property支持自动补全,支持级联...

    注解的用法解析

    @Param 注解是 MyBatis 中一个非常有用的注解,它可以帮助我们更方便地定义参数名称,并在 SQL 语句中引用参数值。通过本文的示例,我们可以看到 @Param 注解的多种用法,并了解使用 @Param 注解与不使用 @Param ...

    MybatisX-idea.0.1.0.jarMapper找到XML

    Intellij Idea Mybatis插件主要功能: 提供Mapper接口与配置文件中对应SQL的导航 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL标签 ResultMap中的property支持自动补全,支持级联...

    总结--Mybatis传递参数的几种方法

    Mybatis 传递参数的几种方法 Mybatis 中传递参数有多种方法,以下是其中的四种: 1. 传递单个参数 在 Mybatis 中,传递单个参数非常简单。可以直接将参数写在方法中,参数类型可以是 String,也可以是基本类型,...

    MyBatis3.0单独例子。

    User selectUserById(@Param("id") int id); ``` MyBatis3.0还增强了动态SQL的功能,使得在SQL语句中进行条件判断变得简单。通过`if`、`choose`(`when`、`otherwise`)、`trim`、`where`、`set`等标签,我们可以...

    sprint boot集成mybatis

    在Spring Boot框架中集成MyBatis是一个常见的任务,它允许我们利用Spring Boot的自动化配置和MyBatis的强大ORM能力来简化数据库操作。本教程将详细讲解如何在Spring Boot项目中集成MyBatis,并实现基本的CRUD(创建...

    深入了解MyBatis参数

    在MyBatis中,参数命名可以使用@Param注解来指定参数名,如果没有指定参数名,那么将使用参数的序号作为参数名。例如,List&lt;User&gt; select(@Param('sex')String sex,Integer age);这里的sex将被记录为参数名,而age将...

    MyBatis关于注解的配置

    MyBatis是一款流行的Java持久层框架,它允许开发者将SQL语句直接写在代码中,大大简化了数据库操作。在MyBatis中,除了传统的基于XML的配置方式,还可以使用注解来完成映射和数据操作。本篇将详细介绍MyBatis如何...

    mybatis-paramDemoError.zip

    在Mybatis中,我们可以使用两种主要方式来传递参数:Map和注解(@Param)。"paramDemo"可能就是演示了这两种参数映射的方法。Map参数映射允许我们将参数以键值对的形式传递,而在动态SQL语句中使用`#{key}`来引用。...

Global site tag (gtag.js) - Google Analytics