输入参数:parameterType(两种取值符号)
1.类型为简单类型
区别:
(1) #{可以为任意值}
${vaue}--->标识符只能是value
(2)#{} 自动给String类型加上‘’--->自动类型转换
${} 原样输出 --->适合于动态字段进行动态排序
(3)#{} 防止sql注入
${} 不防止
相同之处:
(1)都可以获取对象的值(嵌套类型对象)
2.对象类型
#{属性名}
${属性名}--->标识符是属性名,eg:stuno
输入对象为HashMap:
用map中key的值匹配 占位符#{name},如果匹配成功,则用map的value替代占位符。
MyBaties调用存储过程
<!--通过调用存储过程查询某年级的总人数 statementType="CALLABLE"
输入参数必须为HashMap-->
<select id="queryCountByGradeWithProcedure" statementType="CALLABLE" resultType="int" parameterType="HashMap">
{
call queryCountByGradeWithProcedure(
#{gName,jdbcType=VARCHAR,mode=in},
#{sCount,jdbcType=INTEGER,mode=out}
)
}
</select>
使用时,通过HashMap的put()方法传入输入参数的值,通过get()方法拿到输出参数的值。
注意jar包的版本问题。
<transactionManager type="JDBC"/>,增删改必须手工commit