mybatis OGNL扩展
程序员文章站
2022-03-19 11:06:49
...
须放在编译类路径下的扩展类
package com.core.dao; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import java.util.Collection; import java.util.Date; import java.util.Map; /** * @description mybatis ognl表达式扩展 * @author: goa * @date: 2016/1/8 18:55 * @version: v2.2.0 */ public class Ognl { /** * 使用ognl扩展 * 该功能为,根据传入的值, * 如果值为0,则 ... 。 * 如果值为1,则 ... 。 * * @return */ public static boolean isSolve(Object o, String soleState) { if (o == null) { return false; } String str = null; if (o instanceof String[]) { String[] objects = (String[]) o; str = objects[0]; } else if (o instanceof Character) { Character c = (Character) o; str = Character.toString(c); } else if (o instanceof String) { String s = (String) o; str = s; } if (soleState.equals(str)) { return true; } else { return false; } } /** * 可以用于判断 Map,Collection,String,Array是否为空 * * @param o * @return */ @SuppressWarnings("unchecked") public static boolean isEmpty(Object o) throws IllegalArgumentException { if (o == null) return true; if (o instanceof String) { return StringUtils.isEmpty((String) o); } else if (o instanceof Collection) { return CollectionUtils.isEmpty((Collection) o); } else if (o.getClass().isArray()) { return ArrayUtils.isEmpty((Object[]) o); } else if (o instanceof Map) { MapUtils.isEmpty((Map) o); } else if (o instanceof Date) { return o == null; } else if (o instanceof Number) { return o == null; } else if (o instanceof Boolean) { return o == null; } else { throw new IllegalArgumentException("Illegal argument type,must be : Map,Collection,Array,String. but was:" + o.getClass()); } return false; } /** * 可以用于判断 Map,Collection,String,Array是否不为空 * * @param o * @return */ public static boolean isNotEmpty(Object o) { return !isEmpty(o); } public static boolean isNotEmpty(Object... objects) { if (objects == null) return false; for (Object obj : objects) { if (isEmpty(obj)) { return false; } ; } return true; } public static boolean isNotBlank(Object o) { return !isBlank(o); } public static boolean isBlank(Object o) { return StringUtils.isBlank((String) o); } public static boolean isBlank(String str) { return StringUtils.isBlank(str); } }
如这样使用:
<if test="@com.core.dao.Ognl@isSolve(type,1)"> AND T.N_STATUS=2</if>