bind:
bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。比如:
<select id="selectBlogsLike" resultType="Blog">
<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
SELECT * FROM BLOG
WHERE title LIKE #{pattern}
</select>
多数据库支持:
一个配置了“_databaseId”变量的 databaseIdProvider 可用于动态代码中,这样就可以根据不同的数据库厂商构建特定的语句。比如:
databaseIdProvider:
<databaseIdProvider type="DB_VENDOR">
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
在mybatis的配置文件中加入<databaseIdProvider type="DB_VENDOR"/>
配置,这里的DB_VENDOR会通过DatabaseMetaData类的getDatabaseProductName()方法返回的字符串进行设置。
注意:DB_VENDOR的匹配策略为,当DatabaseMetaData#getDatabaseProductName()返回的字符串包含property中name的部分值即可匹配 ,即模糊匹配。如SQL Server的全称为Microsoft SQL Server,只需要配SQL Server就行了。
<insert id="insert">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
<if test="_databaseId == 'oracle'">
select seq_users.nextval from dual
</if>
<if test="_databaseId == 'db2'">
select nextval for seq_users from sysibm.sysdummy1"
</if>
</selectKey>
insert into users values (#{id}, #{name})
</insert>