一、Ibatis常用動態sql語法,簡單粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util.HashMap" resultMap="BeanFieldMap"> SELECT Column_list FROM Table_na ...
一、Ibatis常用動態sql語法,簡單粗暴用一例子
<select id="iBatisSelectList" parameterClass="java.util.HashMap" resultMap="BeanFieldMap">
SELECT
Column_list
FROM
Table_name
WHERE 1=1
<isNotEmpty prepend="and" property="areacode">
areaCodes like concat('%', #areacode#, '%')
</isNotEmpty>
<isNotEmpty property="types" prepend="and">
<iterate property="types" open="(" conjunction="or" close=")">
type like concat('%',#types[]#,'%')
</iterate>
</isNotEmpty>
<isNotEmpty property="datestart" prepend="and">
inputDate <![CDATA[>]]> #datestart#
</isNotEmpty>
<isNotEmpty property="dateend" prepend="and">
inputDate <![CDATA[<]]> #dateend#
</isNotEmpty>
<isEqual property="order" compareValue="asc">
order by inputDate asc limit #skipCount#,#pageSize#
</isEqual>
<isEqual property="order" compareValue="desc">
order by inputDate desc limit #skipCount#,#pageSize#
</isEqual>
</select>
其中java中對應的
public List<T> selectLis(String areacode,String type,String datestart,String dateend,Integer skipCount,String order,Integer pageSize){
Map<String, Object> params = new HashMap<String, Object>();
params.put("areacode", areacode);
if(type.indexOf(",")>=0){ //type字元串多個以,隔開
String[] types = type.split(",");
params.put("types", types);
}else{
String[] types = {type};
params.put("types", types);
}
params.put("skipCount", skipCount.toString());
params.put("pageSize", pageSize.toString());
params.put("datestart", datestart);
params.put("dateend", dateend);
params.put("order", order);
logger.info("輸入參數:{}", params);
try {
return sqlMapClient.queryForList("iBatisSelectList", params);
} catch (SQLException e) {
logger.info("參數{},異常{}", params, e.getStackTrace());
}
}
這個例子涉及到like語句(areacode)用法,集合語句(type)用法,特殊字元用法等,註意格式!!!