`

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的用法和作用,在文中给大家补充了spring中@param和mybatis中@param使用区别,需要的朋友可以参考下

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

    方法多参数@Param。

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

    主要介绍了Mybatis使用@param注解四种情况解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

    主要介绍了mybatis多个接口参数的注解使用方式(@Param),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    浅谈为什么要使用mybatis的@param

    主要介绍了浅谈为什么要使用mybatis的@param,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    mybatis-param-clazzStudent-222

    mybatis-param-clazzStudent-222mybatis-param-clazzStudent-222

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

    我们经常会遇到表中的字段名和表对应实体类的属性名称不一定都是完全相同的情况,如何解决呢?下面脚本之家小编给大家介绍MyBatis学习教程(四)-如何快速解决字段名与实体类属性名不相同的冲突问题,一起学习吧

    mybatis-paramDemo.zip

    mybatis各种功能实例

    free-idea-mybatis.zip

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

    IntelliJ IDEA2018安装mybatis_plus插件

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

    MybatisX-idea.0.1.0.jar

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

    MybatisX-idea.0.1.0.jarMapper找到XML

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

    SpringBoot+mybatis基于注解式增删改查框架源码程序

    SpringBoot+mybatis基于注解式增删改查框架源码程序, @Insert("INSERT INTO USER(nick_name, user_code) VALUES(#{nickName}, #{userCode})") int insertParam(@Param("nickName") String nickName, @Param(...

    idea安装mybatis_plugin插件教程

    mybatis_plugin是啥? 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL标签 ResultMap中的property支持自动补全,支持级联(属性A.属性B.属性C) 快捷键生成@Param注解 XML中编辑SQL时, 支持参数...

    IntelliJ 的插件 mybatis plugins-3.55

    XML中编辑SQL时, 支持参数自动补全(基于@Param注解识别参数) 自动检查Mapper XML文件中ID冲突 自动检查Mapper XML文件中错误的属性值 支持Find Usage 支持重构从命名 支持别名 自动生成ResultMap属性 快捷键:...

    mybatis-async:mybaits异步框架

    mybatis-async mybatis-async,是封装了mybatis的异步框架。 逻辑图如下: 工程依赖 Jdk 1.8 Maven 3.x mybits 3.x 调用示例 实现规范 AsyncMethod 注解, 标记Mapper的某个方法是异步调用的 AsyncType 注解, 异步的...

    mybatis-generator自动生成实体没有注释问题

    直接运行 generator.sh... * @param hid 医院id */ public void setHid(Integer hid) { this.hid = hid; } /** * 医生id * @return DOCTOR_ID 医生id */ public String getDoctorId() { return doctorId; }

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

    搭建mybatis所需包org.apache.ibatis.annotations.Param @Param

    MyBatis 需要注意的地方junit注解

    4.取变量时,如果dao层接口使用的是@param("别名")注解,则根据别名取值 5.mapper.xml中$和#取值的区别 4.mybatis的xml中如何设置返回值 resultType返回的数据类型 5.$和#区别 1. #将传入的数据都当成一个字符串,会...

    MybatisPlugin2.73(可直接使用,你懂得)

    XML中编辑SQL时, 支持参数自动补全(基于@Param注解识别参数) 自动检查Mapper XML文件中ID冲突 自动检查Mapper XML文件中错误的属性值 支持Find Usage 支持重构从命名 支持别名 自动生成ResultMap属性 快捷键: Option...

Global site tag (gtag.js) - Google Analytics