簡體   English   中英

如何使用 mybatis 直接從 java 代碼中執行查詢?

[英]How to exequte query directly from java code using mybatis?

我需要在運行時執行由 java 代碼生成的查詢(不是靜態方法)。 我已經知道如何使用注解和靜態方法或使用 xml 映射器來構建動態查詢,但它不適合我的情況。

有沒有辦法直接從java代碼執行查詢?

Mybatis 已經有這個功能了,但是你必須使用適配器,如下所示。

  1. 創建一個適配器類;

     public class SQLAdapter { String sql; public SQLAdapter(String sql) { this.sql = sql; } public String getSql() { return sql; } public void setSql(String sql) { this.sql = sql; } }
  2. 創建類 SQLAdapter 的 typeAlias

<typeAlias alias="sqladapter" type="com.zj.xxx.xxx.SQLAdapter" />

  1. 在需要直接執行 sql 的每個對象 xml 中放置選擇標記。

     <select id="findRecords" parameterType="SQLAdapter" resultMap="xxxxxResultMap"> ${sql} </select>
  2. 像這樣調用這個選擇方法

    String _sql = "select * from table where... order by... limit..."; xxxxx.findRecords(new SQLAdapter(_sql));
  3. 事情都已經做好了。 您不能再在 xml 文件中編寫復雜的 sql 語言。 祝你好運。

似乎最好的答案是在這種情況下使用 JDBC。

您可以使用 SQL 查詢作為文字參數來執行此操作:

<select id="findRecords" parameterType="string" resultMap="xxxxxResultMap">  
    ${_parameter}
</select>

您只能通過 where 子句:

<select id="findRecords" parameterType="string" resultMap="xxxxxResultMap">  
    select * from records where ${_parameter}
</select>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM