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>

标签: none

添加新评论