mybatis多数据库支持和bind元素

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>
发布了74 篇原创文章 · 获赞 19 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/zhoushimiao1990/article/details/100084966