1. 程式人生 > >在mybatis的sqlMapper中使用Ognl判斷動態sql語句

在mybatis的sqlMapper中使用Ognl判斷動態sql語句

1.編寫Ognl類

import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;

/**
 * @author:Pionner17
 * @date: 2017/9/10 22:56
 * @email:[email protected]
 * @phone: 17600903381
 * @motto: make a little progress every day!
 * @params: * Ognl工具類,主要是為了在ognl表示式訪問靜態方法時可以減少長長的類名稱編寫
 * Ognl訪問靜態方法的表示式為: @
[email protected]
(args) */ public class Ognl { /** * 可以用於判斷String,Map,Collection,Array是否為空 * @param o * @return */ public static boolean isEmpty(Object o) throws IllegalArgumentException { if(o == null) return true; if(o instanceof String) { if(((String)o).length() == 0){ return true; } } else if(o instanceof Collection) { if(((Collection)o).isEmpty()){ return true; } } else if(o.getClass().isArray()) { if(Array.getLength(o) == 0){ return true; } } else if(o instanceof Map) { if(((Map)o).isEmpty()){ return true; } }else { return false; // throw new IllegalArgumentException("Illegal argument type,must be : Map,Collection,Array,String. but was:"+o.getClass()); } return false; } /** * 可以用於判斷 Map,Collection,String,Array是否不為空 * @param c * @return */ public static boolean isNotEmpty(Object o) { return !isEmpty(o); } public static boolean isNotBlank(Object o) { return !isBlank(o); } public static boolean isNumber(Object o) { if(o == null) return false; if(o instanceof Number) { return true; } if(o instanceof String) { String str = (String)o; if(str.length() == 0) return false; if(str.trim().length() == 0) return false; return org.apache.commons.lang.StringUtils.isNumeric(str); } return false; } public static boolean isBlank(Object o) { if(o == null) return true; if(o instanceof String) { String str = (String)o; return isBlank(str); } return false; } public static boolean isBlank(String str) { if(str == null || str.length() == 0) { return true; } for (int i = 0; i < str.length(); i++) { if (!Character.isWhitespace(str.charAt(i))) { return false; } } return true; } }

2.利用Ognl動態判斷if
<select id="getUserList" parameterType="Map" resultMap="result_User_Map">
        select <include refid="user_Column" />  from user
        <where>
            <if test="@[email protected](id)">
                and ID = #{id}
            </if>
            <if test="@
[email protected]
(username)"> and USERNAME = #{username} </if> </where> </select>

注意:Ognl類必須放在與包名同級的資料夾下


相關推薦

no