mybatis中动态sql的传参要求

mybatis中,可以实现动态sql,在serviceImpl中,传入参数的时候,要注意传入参数的名字和动态sql 中的变量名保持一致。

比如

xml:

代码中所有标红的地方就是动态sql 的变量名,要与下面serviceImpl中的传入的参数名保持一致。

serviceImpl:

public Map queryStudyById(String datumId) {
    	Map paramMap = new HashMap();
    	paramMap.put("datumId", datumId);
    	return (Map) daoHelper.queryOne("com.camel.basic.web.xml.oracle.StudytraMapper.queryStudyList", paramMap);
}

这里面的datumId与动态sql的要一致,大小写也要一致,这里只传了datumId,那么xml的动态sql中其他的就是空,不会执行,运行的sql为:

select t.* from SGT_WIS_STUDY_TRAIN t where 1=1 and t.DATUM_ID = #{datumId}


还有一种特殊情况,如果传入的参数只有一个,并且是基本数据类型,如String,那么sql中的传入参数名可以是_parameter,不用与serviceImpl中的参数名保持一致。如下面代码:

xml:


    delete from SGT_WIS_STUDY_TRAIN t
    where 1=1
    _parameter != null">
    t.DATUM_ID = #{_parameter,jdbcType=VARCHAR}
    

serviceImpl中传入的参数名不需要是_parameter:

public int deleteStudytra(String DATUM_ID) {	
    return daoHelper.delete("com.camel.basic.web.xml.oracle.StudytraMapper.deleteStudyById", DATUM_ID);
}

因为这是mybatis框架做了处理。

你可能感兴趣的:(java)