MyBatis支持的三个特殊的参数:
列参数:${columns}传递动态列
select ${columns} from t_tablename
sql参数:#{prefix}和${tablename}传递不同的表
#{prefix}引入部分的sql
${tablename}引入全部的sql
//在这里定义sql
<sql id="role_columns">
#{prefix}.role_no,#{prefix}.role_name,#{prefix}.note
</sql>
//引入部分的sql
//在这里通过include和property引用
<select parameterType="String" id="getRole" resultMap="roleResultMap">
select
<include refid="role_columns">
<property name="prefix" value="r"/>
</include>
from t_role r
where role_no=#{roleNo}
</select>
//引入全部的sql语句
//这里定义
<sql id="someinclude">
select * from <include refid="${tableName}"/>
</sql>
//在这里引用通过Include和property
<select parameterType="String" id="getRole" resultMap="roleResultMap">
<include refid="someinclude">
<property name="tableName" value="t_role"/>
</include>
</select>
注意:
id需要用refid来引用
refid需要name和value来传值
因为传值的步骤无非是先指定传递的对象 然后指定传递的值 最后开始传递