2013-04-22 24 views
5

Çalışma zamanında java kodu tarafından oluşturulan sorguyu çalıştırmam gerekiyor (statik yöntem değil). Açıklama ve statik yöntem kullanarak veya xml mapper kullanarak dinamik sorgu oluşturmayı zaten biliyorum, ama benim durumumda uygun değil.Mybatis'i kullanarak doğrudan java kodundan sorgulama nasıl yapılır?

Doğrudan java kodundan sorgu yürütmenin bir yolu var mı?

+0

[düz JDBC] (http://docs.oracle.com/javase/tutorial/jdbc/)? – skirsch

cevap

1

En iyi cevap, bu durumda JDBC kullanmaktır gibi görünüyor.

7

Mybatis zaten bu işleve sahiptir, ancak adaptörü aşağıdaki gibi kullanmalısınız.

  1. Bir adaptör sınıfı oluşturun;

    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. her nesnenin xml

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

  1. koymak seçme etiketi sınıfı SqlAdapter ait typeAlias ​​oluşturmak exec için gereken yere sql'yi doğrudan ute.

    <select id="findRecords" parameterType="SQLAdapter" resultMap="xxxxxResultMap"> 
        ${sql} 
    </select> 
    
  2. çağrı

    String _sql = "select * from table where... order by... limit..."; 
    xxxxx.findRecords(new SQLAdapter(_sql)); 
    
  3. şeyler gibi bu seçme yöntemi tüm yapılmıştır. Artık xml dosyasında karmaşık sql dili yazamazsınız. İyi şanslar.

0

Bu kullanarak SQL sorgu olarak değişmez parametre yapabilirsiniz:

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

Sen geçebilir ancak nerede fıkra: Sen kullanarak, demek

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