如何使用mybatis编写动态sql,根据变量值执行不同语句?
当程序需要兼容不同数据库类型并且数据库语句在某些场景下有所不同时,需要根据变量值动态执行不同的sql语句。
mybatis提供了数据库厂商标识(databaseidprovider)机制。通过该机制,可以在mybatis xml文件中使用 databaseid 属性指定不同数据库厂商的标识,然后根据不同的标识执行不同的语句。
例如,以下代码根据 databaseid 属性指定了不同数据库厂商的标识,并根据标识执行了不同的语句:
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="mysql"> select * from multil </select> <select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="oracle"> select id from multil </select>
这样,当使用不同的数据库厂商时,只需要指定不同的 databaseid 即可,而无需手动编写不同的sql语句。