总结我所用到的MyBatis,Dao层传递参数到mapping.xml文件的几种方式:
第一种:传递单个参数
Dao层Code片段:
-
/**
-
* 根据articleId查询XXXX详情.
-
*
-
* @param articleId
-
* @return {@link CmsProductArticle}
-
*/
-
public CmsProductArticle getCmsProductArticleByArticleId(Long articleId);
-
< 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);
-
<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片段:
-
/**
-
* 查询companyId是否存在.
-
*
-
* @param companyId
-
* @param imgId
-
* @return int
-
*/
-
public int queryCompanyIdAndImgIdIsExist( Long companyId, Long imgId);
-
<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片段:
-
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>
第三种:以实体类传递
Dao层Code片段:
-
/**
-
* 更新.
-
*
-
* @param cmsProductArticle
-
* @return
-
*/
-
public void updateCmsProductArticle(CmsProductArticle cmsProductArticle);
-
< 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>