总结我所用到的MyBatis,Dao层传递参数到mapping.xml文件的几种方式:
第一种:传递单个参数
Dao层Code片段:
- /**
- * 根据articleId查询XXXX详情.
- *
- * @param articleId
- * @return {@link CmsProductArticle}
- */
- public CmsProductArticle getCmsProductArticleByArticleId(Long articleId);
Mapping片段:
- <select id="getCmsProductArticleByArticleId" parameterType="Long" resultType="xxx.xxxxx.xxx.xxxxx.xxx.CmsProductArticle">
- SELECT
- *
- FROM
- tableA a, tableB b
- WHERE
- a.article_id = b.article_id
- and a.del_flag != 2
- and b.article_id = #{articleId}
- </select>
传递单个参数时直接将parameterType设置成你传入的参数类型(Long),直接用“#{}”获得参数,参数名必须与Dao层参数名一致。
resultType是SQL查询结果返回的类型,Dao层接口返回是实体类,所以这里的resultType是实体类的路径(按住ctrl键,鼠标点击路径时可以直接进入实体类时路径正确)
第二种:传递多个参数
1,以注解标记
Dao层Code片段:
- /**
- * 查询companyId是否存在.
- *
- * @param companyId
- * @param imgId
- * @return int
- */
- public int queryCompanyIdAndImgIdIsExist(@Param("companyid") Long companyId, @Param("id") Long imgId);
Mapping片段:
- <select id="queryCompanyIdAndImgIdIsExist" resultType="Integer">
- select
- count(1)
- from table_img img
- where img.company_id = #{companyid}
- and img.id = #{id}
- </select>
此时不需要写parameterType,但是注意“#{}”内的参数名必须跟你在Dao层中注解@Param("")内定义的名称一致。
2,直接传递参数
Dao层Code片段:
- /**
- * 查询companyId是否存在.
- *
- * @param companyId
- * @param imgId
- * @return int
- */
- public int queryCompanyIdAndImgIdIsExist( Long companyId, Long imgId);
Mapping片段:
- <select id="queryCompanyIdAndImgIdIsExist" resultType="Integer">
- select
- count(1)
- from table_img img
- where img.company_id = #{0}
- and img.id = #{1}
- </select>
#{0}与#{1}是你在Dao里的参数顺序
3,以Map传递参数
实现类Code片段:
- Map<String,Object> searchCondition = new HashMap<>();
- searchCondition.put("categoryId", categoryId);
- searchCondition.put("status", status);
- List<CmsProductArticle> cmsProductArticles = cmsProdcutArticleDao.getCmsProductArticles(searchCondition);
Dao层Code片段:
- /**
- * 根据搜索条件查询产品模板集.
- *
- * @param searchCondition
- * @return List<CmsProductArticle>
- */
- public List<CmsProductArticle> getCmsProductArticles(Map<String, Object> searchCondition);
Mapping片段:
- <select id="getCmsProductArticles" parameterType="java.util.Map" resultType="xxx.xxxxxxx.xxx.xxxxx.xxxxxxx.CmsProductArticle">
- SELECT
- *
- FROM
- table a, table b
- WHERE
- a.article_id = b.article_id
- and a.del_flag != 2
- <if test="categoryId != null">
- and a.category_id = #{categoryId}
- </if>
- <if test="status != null">
- and a.status = #{status}
- </if>
- </select>
#{categoryId}、#{status}对应你在Map里面的Key
第三种:以实体类传递
Dao层Code片段:
- /**
- * 更新.
- *
- * @param cmsProductArticle
- * @return
- */
- public void updateCmsProductArticle(CmsProductArticle cmsProductArticle);
Mapping片段:
- <update id="updateCmsProductArticleBase" parameterType="xxx.xxxxxxx.xxx.xxxxx.xxxxxxx.CmsProductArticle">
- UPDATE table
- SET
- category_id = #{categoryId}, supply_type = #{supplyType}, pay_type = #{payType}, pay_value = #{payValue}, status = #{status}
- WHERE
- article_id = #{articleId}
- and del_flag != 2
- </update>
#{categoryId}等对应实体类中属性。
相关推荐
"浅谈为什么要使用mybatis的@param" 在 MyBatis 中,使用 @Param 注解可以给映射器方法中的参数命名,这样可以解决多个参数时的混淆问题。下面我们来详细讲解为什么要使用 @Param 注解。 首先, lets 看一个报错的...
在MyBatis中,`@Param`注解是用来处理方法中多个参数的情况,尤其是在编写自定义的Mapper接口时。这个注解允许我们为每个参数指定一个唯一的名称,以便在SQL语句中引用它们。下面我们将深入探讨`@Param`的使用、作用...
Mybatis中@Param的用法和作用详解 Mybatis中@Param的用法和作用是本文的主要内容,下面我们将详细介绍@Param的用法和作用,以及与Spring中@param的使用区别。 @Param的用法 -------- 在Mybatis中,@Param注解的...
MyBatis 多个接口参数的注解使用方式(@Param) 在 MyBatis 中,使用 @Param 注解可以实现多个接口参数的传递,这可以解决在实际开发中遇到的多个参数传递问题。本文将详细介绍 MyBatis 中多个接口参数的注解使用...
在Mybatis框架中,`@Param`注解是一个非常重要的元素,它用于给方法参数命名,使得Mybatis能够识别并正确地将Java方法的参数值映射到SQL语句中的占位符。下面我们将详细探讨`@Param`注解在四种不同情况下的使用和...
本主题聚焦于"Mybatis-param-clazzStudent-222",这可能是一个关于MyBatis中处理参数映射到复杂类型,如学生类(ClazzStudent)的实例。以下是对这一知识点的详细阐述: 首先,MyBatis的参数映射是其核心功能之一,...
在Java开发中,MyBatis是一个非常流行的持久层框架,它简化了数据库操作与Java对象之间的映射。本文将深入探讨如何使用MyBatis的注解配置来实现一对多关系映射,以此来提高开发效率并减少代码冗余。 首先,我们需要...
本示例 "mybatis-paramDemo" 旨在展示 MyBatis 中参数处理的各种方式,帮助开发者理解如何在 SQL 查询中传递和使用参数。下面我们将详细探讨 MyBatis 中的参数处理机制。 1. **动态 SQL**:MyBatis 的一大亮点就是...
在MyBatis框架中,当数据库表的字段名与实体类的属性名不一致时,我们需要采取特定的方式来解决这种冲突,以确保数据的正确映射。以下是一些关键点和解决方案: 1. **别名配置**: - MyBatis允许我们在实体类中...
`org.apache.ibatis.annotations.Param`是MyBatis中的一个重要注解,用于处理方法参数映射。 `@Param`注解主要用于SQL查询中的动态参数绑定,尤其是在动态SQL语句中。在MyBatis的映射文件或者Mapper接口中,当我们...
IDEA插件free mybatis plugin下载、 xml和mapper之间的有用导航 支持生成语句,@Param注释和xml的映射器 在xml中支持一些有用的mapper重命名 支持mapper xml中select语句的正确结果类型 支持mapper xml的正确...
Intellij Idea Mybatis插件主要功能: 提供Mapper接口与配置文件中对应SQL的导航 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL标签 ResultMap中的property支持自动补全,支持级联...
@Param 注解是 MyBatis 中一个非常有用的注解,它可以帮助我们更方便地定义参数名称,并在 SQL 语句中引用参数值。通过本文的示例,我们可以看到 @Param 注解的多种用法,并了解使用 @Param 注解与不使用 @Param ...
Intellij Idea Mybatis插件主要功能: 提供Mapper接口与配置文件中对应SQL的导航 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL标签 ResultMap中的property支持自动补全,支持级联...
Mybatis 传递参数的几种方法 Mybatis 中传递参数有多种方法,以下是其中的四种: 1. 传递单个参数 在 Mybatis 中,传递单个参数非常简单。可以直接将参数写在方法中,参数类型可以是 String,也可以是基本类型,...
User selectUserById(@Param("id") int id); ``` MyBatis3.0还增强了动态SQL的功能,使得在SQL语句中进行条件判断变得简单。通过`if`、`choose`(`when`、`otherwise`)、`trim`、`where`、`set`等标签,我们可以...
在Spring Boot框架中集成MyBatis是一个常见的任务,它允许我们利用Spring Boot的自动化配置和MyBatis的强大ORM能力来简化数据库操作。本教程将详细讲解如何在Spring Boot项目中集成MyBatis,并实现基本的CRUD(创建...
在MyBatis中,参数命名可以使用@Param注解来指定参数名,如果没有指定参数名,那么将使用参数的序号作为参数名。例如,List<User> select(@Param('sex')String sex,Integer age);这里的sex将被记录为参数名,而age将...
MyBatis是一款流行的Java持久层框架,它允许开发者将SQL语句直接写在代码中,大大简化了数据库操作。在MyBatis中,除了传统的基于XML的配置方式,还可以使用注解来完成映射和数据操作。本篇将详细介绍MyBatis如何...
在Mybatis中,我们可以使用两种主要方式来传递参数:Map和注解(@Param)。"paramDemo"可能就是演示了这两种参数映射的方法。Map参数映射允许我们将参数以键值对的形式传递,而在动态SQL语句中使用`#{key}`来引用。...