2011-10-06 2 views

답변

0

당신은 전체에 대한 문자열을 구축 할 수 있습니다 위해 우리가

# COLUMNNAME # = # 값 #

이 작동하지

값 # ## ussing 값을 전달할 수 있습니다 WHERE 절을 매개 변수 개체에 넣은 다음 iBATIS XML에서 다음과 같이 참조하십시오.

select * 
from blah 
where ?whereClause? 

'?' 매개 변수의 끝에서 iBATIS가 그 내용을 그대로 사용하도록 지시한다. 이로 인해 잠재적 인 위험 (SQL injection 등)이 발생할 수 있으므로이 방법을 진행하기 전에 매개 변수를 철저히 확인하십시오.

1

이것은 IBatis에서 동적 쿼리를 생성하여 내 솔루션입니다.

쿼리에 대한 구성 개체 :

[Serializable] 
    public partial class QueryHelper 
    { 
     private string _queryFields; 
     public string query_fields 
     { 
      get { return _queryFields; } 
      set { _queryFields = value; } 
     } 

     private string _queryFrom; 
     public string query_from 
     { 
      get { return _queryFrom; } 
      set { _queryFrom = value; } 
     } 

     private string _queryFilterDefa; 
     public string query_filter_defa 
     { 
      get { return _queryFilterDefa; } 
      set { _queryFilterDefa = value; } 
     } 

     private string _queryFilterId; 
     public string query_filter_id 
     { 
      get { return _queryFilterId; } 
      set { _queryFilterId = value; } 
     } 

     private string _queryJoins; 
     public string query_joins 
     { 
      get { return _queryJoins; } 
      set { _queryJoins = value; } 
     } 

     private string _queryFilter; 
     public string query_filter 
     { 
      get { return _queryFilter; } 
      set { _queryFilter = value; } 
     } 

     private string _queryOrder; 
     public string query_order 
     { 
      get { return _queryOrder; } 
      set { _queryOrder = value; } 
     } 
    } 

는 XML

<?xml version="1.0" encoding="utf-8" ?> 
<sqlMap namespace="QueryHelper" 
    xmlns="http://ibatis.apache.org/mapping" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <alias> 
    <typeAlias alias="QueryHelper" type="Core.CustomEntities.QueryHelper" /> 
    </alias> 
    <statements> 
    <select id="ExecuteQuery" parameterClass="QueryHelper" resultClass="HashTable"> 
     SELECT $query_fields$ 
     FROM $query_from$ 
     <isNotEmpty property="query_joins" > 
     $query_joins$ 
     </isNotEmpty> 
     WHERE $query_filter_defa$ 
     <isNotEmpty prepend="AND" property="query_filter_id" > 
     $query_filter_id$ 
     </isNotEmpty> 
     <isNotEmpty prepend="AND" property="query_filter" > 
     $query_filter$ 
     </isNotEmpty> 
     <isNotEmpty prepend="ORDER BY" property="query_order" > 
     $query_order$ 
     </isNotEmpty> 
    </select> 
    </statements> 
</sqlMap>