`
qq123zhz
  • 浏览: 530529 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mybatis 使用ognl

阅读更多

@Ognl@isNotEmpty() for String,Array,Collection,Map Test

now, test empty string test. must use:

<if test="userId != null && ''.equals(userId)">
and user_id = #{userId}
</if>

but, OGNL support Calling Static Methods.
http://www.opensymphony.com/ognl/html/LanguageGuide/staticMethods.html

so, we can use this for test empty String,Array,Collection,Map.
look like this:

<if test="@Ognl@isNotEmpty(userId)">
        and user_id = #{userId}
</if>




source code:

public class Ognl {

/**
* test for Map,Collection,String,Array isEmpty
* @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;
}

return false;
}

/**
* test for Map,Collection,String,Array isNotEmpty
* @param c
* @return
*/
public static boolean isNotEmpty(Object o) {
return !isEmpty(o);
}
}


and will put this class to "default package".

 

要把ognl.java文件放到default package下,否则会报错。。。

错误:ibatis Method "isNotEmpty" failed for object Ognl [java.lang.ClassNotFoundException: java.lang.Ognl]

分享到:
评论

相关推荐

    MyBatis中OGNL的使用教程详解

    当在SQL字符串中使用`${}`时,MyBatis会使用OGNL解析其中的表达式。例如: ```xml select id,name,... from country != null and name != ''"&gt; name like '${'%' + name + '%'}' ``` 注意,使用...

    mybatis中使用ognl共4页.pdf.zip

    【标题】"mybatis中使用ognl共4页.pdf.zip" 涉及的主要知识点是MyBatis框架中对OGNL(Object-Graph Navigation Language)表达式的应用。OGNL是一种强大的表达式语言,常用于获取、设置Java对象的属性,以及执行对象的...

    Mybatis利用OGNL表达式处理动态sql的方法教程

    Mybatis是一款强大的持久层框架,它允许开发者将SQL语句直接写在XML配置文件...理解并熟练掌握这些动态SQL标签,对于提升Mybatis的使用技能至关重要。在实际开发中,可以根据具体需求灵活运用,使SQL语句更加简洁高效。

    简单MyBatis所需jar包

    2. **mybatis-ognl-x.x.x.jar**:MyBatis使用OGNL(Object-Graph Navigation Language)表达式语言来处理结果映射和参数映射。这个jar文件包含了OGNL的实现,用于在对象图中导航和操作数据。 3. **mybatis-spring-x...

    mybatis开发所需的基础jar包.zip

    3. **mybatis-ognl-x.x.x.jar**:MyBatis使用OGNL(Object-Graph Navigation Language)作为表达式语言,用于对象属性的访问和表达式的计算。OGNL jar包提供了对对象属性的动态访问能力,使得我们可以用简洁的表达式...

    MyBatis官方包.rar

    - ognl-x.x.x.jar:Object-Graph Navigation Language,MyBatis使用OGNL作为表达式语言来访问对象属性。 - ...其他可能的依赖,如 Commons-logging、guava 等。 3. **文档**:可能包含MyBatis的官方文档,如PDF或...

    mybatis用到的jar包

    10. **ognl-x.x.x.jar**:Object-Graph Navigation Language (OGNL) 是一个强大的表达式语言,MyBatis使用OGNL来解析和执行SQL中的动态条件,以及在结果映射中的属性获取。 以上就是MyBatis框架通常会用到的一系列...

    mybatis的包.zip

    MyBatis使用OGNL作为其默认的表达式语言,用于动态SQL中的条件判断和值传递。 9. commons-logging-1.2.jar:Apache Commons Logging是Java的日志抽象层,允许开发者选择具体的日志实现。MyBatis使用它来实现日志...

    mybatis_jar所用到的所有jar包+官方文档

    5. `ognl-x.x.x.jar`:Object-Graph Navigation Language,MyBatis使用OGNL作为表达式语言,处理动态SQL和对象属性的获取与设置。 这些jar包共同构成了MyBatis运行的基础环境,确保了与数据库的交互、日志记录以及...

    36道面试常问的MyBatis面试题!.docx

    执行时,MyBatis使用OGNL表达式计算变量的值,根据计算结果动态生成SQL,从而实现SQL的动态拼接,提高了代码的可读性和灵活性。 #{}和${}的区别在于:#{}是预编译处理,相当于PreparedStatement中的占位符,能够...

    MyBatis面试专题.pdf

    MyBatis使用OGNL(对象图导航语言)来计算SQL参数对象中的表达式值,并根据表达式的结果动态生成SQL语句。 MyBatis中的#{}和${}是两种不同的参数占位符。#{}是预编译处理,可以防止SQL注入,而${}是简单的字符串...

    MyBatis 36道面试题和答案.docx

    动态SQL的执行原理是,MyBatis使用OGNL语言解析表达式,根据表达式的值动态生成SQL,从而达到动态SQL的效果。 **#{}和${}的区别** #{}和${}是MyBatis中的参数占位符。#{}是预编译处理,适用于PreparedStatement,...

    mybatis相关面试问题.docx

    - 执行原理是MyBatis使用OGNL语言表达式从SQL参数对象中获取值,根据表达式的计算结果动态拼接SQL,以实现SQL的动态生成。 4. **缓存机制** - **一级缓存**:基于PerpetualCache的HashMap,作用域是Session。当...

    ognl源码

    5. **上下文和值栈**:ognl使用值栈来管理其执行环境,允许在表达式中引用栈上的对象。 6. **表达式缓存**:ognl有表达式编译和缓存机制,以提高性能。 源码分析的关键部分包括: - **Parser**:ognl的解析器将...

    mybatis最新所有jar包

    2. **mybatis-ognl-x.x.x.jar**:MyBatis默认使用OGNL(Object-Graph Navigation Language)作为表达式语言来处理动态SQL。OGNL提供了一种强大的方式来获取和设置Java对象的属性。 3. **mybatis-spring-x.x.x.jar**:...

    mybatis-3.5.6.zip

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在mybatis-3.5.6.zip这个压缩包中,包含了MyBatis框架的最新版本3.5.6的...

    mybatis相关资料

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题中的“mybatis相关资料”表明这是一个关于MyBatis框架的学习资源...

Global site tag (gtag.js) - Google Analytics