Mybatis方法入参映射:内置参数 _parameter 和 _databaseId 详细介绍
Mybatis 本质就是一个sql映射器,主要映射两部分东西:方法入参和返回结果。
Mybatis中提供了两个常用的内置参数:_parameter和_databaseId。前者主要用于方法参数映射,后者主要用于配置开关的作用。
mybatis的内置参数_parameter保存了对应传入的对象:
<insert id="insertUser" parameterType="cn.mybatis.model.User">
insert into t_users values(
<if test="_parameter != null">
#{_parameter.name},
</if>
#{_parameter.age},
#{_parameter.address},
)
</insert>
此时,_parameter参数保存了cn.mybatis.model.User这个对象。所以可以通过OGNL表达式从_parameter参数中获取到User的对应属性值,也就是把_parameter看作了users的别名。
本质上来说,_parameter 代表整个参数。单个参数:_parameter就是这个参数。多个参数:参数会被封装为一个map,_parameter就是代表这个map,取值的时候如同上面的形式。
当mybatis的核心配置文件中配置了databaseIdProvider:
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<!--//多个数据库提供商配置...-->
</databaseIdProvider>
此时mybatis中内置的参数_databaseId中保存了用户所指定的对应的数据库厂商标识。
<select id="selectUers" databaseId="mysql" resultType="cn.mybatis.model.User">
<if test="_databaseId == 'mysql'">
select * from usrs where id = #{id}
</if>
</select>