MyBatis学习——内置参数的使用:_parameter、_datebaseId

一、内置参数说明

MyBatis有两个内置参数,分别是_parameter、_datebaseId,也就是说这两个参数是不需要我们定义也可以直接拿来使用的。

_parameter:代表整个参数,如果传入的是单个参数或对象,那么_parameter就可以代表这个参数或对象,如果传入的是多

个参数,那么_parameter代表的就是一个map(MyBatis会默认将参数封装为map)

_datebaseId:代表我们当前使用的数据库别名,前提是我们配置了databaseIDProvider标签

databaseIDProvider标签用于配置多个数据库,配置信息如下:

<environments default="dev_mysql">
        <environment id="dev_mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        <environment id="dev_oracle">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
<databaseIdProvider type="DB_VENDOR">
     	<property name="MySQL" value="mysql"/>       
        <property name="Oracle" value="oracle" />
     </databaseIdProvider>
二、应用场景的说明

1._parameter

传入参数:

/**
	 * 多个参数查询user集合
	 * 
	 * @param list
	 * @return
	 */
	@SuppressWarnings("unchecked")
	List<User> getUsersByListParam(@Param("list") List list);
接口传入的参数是一个list,一般情况下我们可以直接使用list来获取这个参数,但是使用_parameter.list也可以达到同样的效果

<select id="getUsersByListParam" resultType="com.xuyong.entity.User">
    		select * from user
    		<foreach collection="_parameter.list" item="item" open="where user_id in(" close=")" separator=",">
    			#{item}
    		</foreach>
    	</select>
2._databaseId
当前默认开启的是mysql,当更换数据库时,如果能够正确的使用_databaseId,就可以避免再去修改Sql。

<select id="selectUserById" resultType="com.xuyong.entity.User">
    		<if test="_databaseId == 'mysql'">
    			select * from user
	    		<where>
	    			user_id = #{id}
	    		</where>
    		</if>
    		<if test="_databaseId == 'oracle'">
    			select * from user
	    		<where>
	    			user_id = #{id}
	    		</where>
    		</if>
    	</select>
或者直接使用databaseId属性:
<select id="selectUserById" resultType="com.xuyong.entity.User" databaseId="mysql">
   			select * from user
    		<where>
    			user_id = #{id}
    		</where>
    	</select>  

猜你喜欢

转载自blog.csdn.net/postersxu/article/details/79058626