mybatis中使用ognl的扩展,实现判断传入的字段:
Mapper文件中:
- <if test="@Ognl@isNotEmpty(id)">
- AND id = #{id}
- </if>
- <if test="@Ognl@isNotEmpty(createrTime)">
- AND createrTime >= #{createrTime}
- </if>
Ognl.java文件:
- public class Ognl {
- /**
- * 可以用于判断 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 c
- * @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 isNumber(Object o) {
- if (o instanceof Number) {
- return true;
- } else if (o instanceof String) {
- return NumberUtils.isNumber((String) o);
- } else {
- return false;
- }
- }
- public static boolean isBlank(Object o) {
- return StringUtils.isBlank((String) o);
- }
- public static boolean isBlank(String str) {
- return StringUtils.isBlank(str);
- }
- }