弱龄寄事外,委怀在琴书。这篇文章主要讲述MyBatis DAO层传递参数到mapping.xml相关的知识,希望能为你提供帮助。
文章来源:http://blog.csdn.net/u011663693/article/details/53334513
MyBatis DAO层传递参数到mapping.xml总结我所用到的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 = https://www.songbingjia.com/android/#{payValue}, status = #{status} WHERE article_id = #{articleId} and del_flag != 2 < /update>
#{categoryId}等对应实体类中属性。
总结我所用到的MyBatis,Dao层传递参数到mapping.xml文件的几种方式:
第一种:传递单个参数
Dao层Code片段:
[java] view plain copy
- /**
- * 根据articleId查询XXXX详情.
- *
- * @param articleId
- * @return {@link CmsProductArticle}
- */
- public CmsProductArticle getCmsProductArticleByArticleId(Long articleId);
[sql] view plain copy
- < 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片段:
[java] view plain copy
- /**
- * 查询companyId是否存在.
- *
- * @param companyId
- * @param imgId
- * @return int
- */
- public int queryCompanyIdAndImgIdIsExist(@Param("companyid") Long companyId, @Param("id") Long imgId);
[java] view plain copy
- < select id="queryCompanyIdAndImgIdIsExist" resultType="Integer">
- select
- count(1)
- from table_img img
- where img.company_id = #{companyid}
- and img.id = #{id}
- < /select>
2,直接传递参数
Dao层Code片段:
[java] view plain copy
- /**
- * 查询companyId是否存在.
- *
- * @param companyId
- * @param imgId
- * @return int
- */
- public int queryCompanyIdAndImgIdIsExist( Long companyId, Long imgId);
[java] view plain copy
- < select id="queryCompanyIdAndImgIdIsExist" resultType="Integer">
- select
- count(1)
- from table_img img
- where img.company_id = #{0}
- and img.id = #{1}
- < /select>
3,以Map传递参数
实现类Code片段:
[java] view plain copy
- Map< String,Object> searchCondition = new HashMap< > ();
- searchCondition.put("categoryId", categoryId);
- searchCondition.put("status", status);
- List< CmsProductArticle> cmsProductArticles = cmsProdcutArticleDao.getCmsProductArticles(searchCondition);
Dao层Code片段:
[java] view plain copy
- /**
- * 根据搜索条件查询产品模板集.
- *
- * @param searchCondition
- * @return List< CmsProductArticle>
- */
- public List< CmsProductArticle> getCmsProductArticles(Map< String, Object> searchCondition);
Mapping片段:
[sql] view plain copy
- < 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>
第三种:以实体类传递
Dao层Code片段:
[java] view plain copy
- /**
- * 更新.
- *
- * @param cmsProductArticle
- * @return
- */
- public void updateCmsProductArticle(CmsProductArticle cmsProductArticle);
[sql] view plain copy
- < 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>
推荐阅读
- java 后台框架 支持APP接口调用 APP后台 手机后台框架java springmvc myb
- Java版本APP接口安全设计
- Android TabHost 实现Tab切换
- Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)
- 在android studio中配置运行时签名
- Android 修改源码自定义SwipeRefreshLayout样式——高仿微信朋友圈下拉刷新
- Android ToolBar使用
- Android 比SwipeRefreshLayout更漂亮和强大的下拉刷新控件(Android-MaterialRefreshLayout)
- Android开发之漫漫长途 IX——彻底掌握Binder