0
A
답변
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>