MyBatis映射器学习三
一.参数
虽然在myBatis中参数大部分都很简单,但是我们还是要了解参数的使用,我们可以通过定制参数的类型去让对应的typeHandler去处理它们,通过指定对应的jdbcType,javaType我们可以明确使用哪个typeHandler去处理参数,或者定制一些特殊的东西,但是要注意的是:定义参数属性的时候,MyBatis不允许换行。
1.参数配置
我们可以传入一个简单的参数,比如int,double等,也可以传入JavaBean,这些我们都了解过,有时候我们需要处理一些特殊的情况,我们可以指定特定的类型,以确定使用哪个typeHandler处理它们,以便我们进行特殊的处理。
例子:
#{age,javaType=int,jdbcType=MUMERIC}
我们可以指定哪个typeHandler去处理参数
#{age,javaType=int,jdbcType=MUERIC,typeHandler=MyTypeHander}
此外,我们还可以对一些数值型的参数设置其保存的精度
#{price,javaType=double,jdbcType=MUERIC,typeHandler=MyTypeHander,numericScale=2}
从上面可见MyBatis映射器可以通过EL的功能帮助完成我们所需要的多种功能。
2.存储过程支持
对于存储过程而言,存在三种参数,IN , OUT , INOUT。
MyBatis的参数规则为其提供了良好的支持,我们通过制定mode属性来确定其是哪一种参数,它的选项有三种:IN , OUT , INOUT。
当参数为OUT时,或者为INOUT的时候,MyBatis会将存储过程返回的结果设置到你定制的参数中。
当你返回的是一个游标(也就是我们定制jdbcType=CURSOR)的时候,你还需要去设置resultMap以便MyBatis将存储过程的参数映射到对应的类型,这时MyBatis就会通过你所设置的resultMap自动为你设置映射结果。
例子:
#{role,mode=OUT,jdbcType=CURSOR,javaType=ResultSet,resultMap=roleResultMap}
上面的javaType是可选的,即使你不指定它,MyBatis也会自动检测它。
MyBatis还支持一些高级