MyBatis 3 動(dòng)態(tài)SQL-動(dòng)態(tài) SQL 中的插入腳本語(yǔ)言

2022-04-11 10:57 更新

動(dòng)態(tài) SQL 中的插入腳本語(yǔ)言

MyBatis 從 3.2 版本開(kāi)始支持插入腳本語(yǔ)言,這允許你插入一種語(yǔ)言驅(qū)動(dòng),并基于這種語(yǔ)言來(lái)編寫(xiě)動(dòng)態(tài) SQL 查詢語(yǔ)句。

可以通過(guò)實(shí)現(xiàn)以下接口來(lái)插入一種語(yǔ)言:

public interface LanguageDriver {
  ParameterHandler createParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql);
  SqlSource createSqlSource(Configuration configuration, XNode script, Class<?> parameterType);
  SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType);
}

實(shí)現(xiàn)自定義語(yǔ)言驅(qū)動(dòng)后,你就可以在 ?mybatis-config.xml? 文件中將它設(shè)置為默認(rèn)語(yǔ)言:

<typeAliases>
  <typeAlias type="org.sample.MyLanguageDriver" alias="myLanguage"/>
</typeAliases>
<settings>
  <setting name="defaultScriptingLanguage" value="myLanguage"/>
</settings>

或者,你也可以使用 ?lang ?屬性為特定的語(yǔ)句指定語(yǔ)言:

<select id="selectBlog" lang="myLanguage">
  SELECT * FROM BLOG
</select>

或者,在你的 ?mapper ?接口上添加 ?@Lang? 注解:

public interface Mapper {
  @Lang(MyLanguageDriver.class)
  @Select("SELECT * FROM BLOG")
  List<Blog> selectBlog();
}

可以使用 ?Apache Velocity? 作為動(dòng)態(tài)語(yǔ)言,更多細(xì)節(jié)請(qǐng)參考 ?MyBatis-Velocity? 項(xiàng)目。

你前面看到的所有 xml 標(biāo)簽都由默認(rèn) MyBatis 語(yǔ)言提供,而它由語(yǔ)言驅(qū)動(dòng) ?org.apache.ibatis.scripting.xmltags.XmlLanguageDriver?(別名為 xml)所提供。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)