mybatis中使用ognl的扩展,实现判断传入的字段:
Mapper文件中:
<select id="getRecentQuestionTitle" parameterType="java.lang.String" resultType="java.lang.String">
select title from song_question where questionState = #{value}
<if test="@Ognl@isSolve(value[0],0)">
order by questionTime desc
</if>
<if test="@Ognl@isSolve(value[0],1)">
order by answerTime desc
</if>
limit 0,1
</select>
Ognl.java文件:
/**使用ognl扩展
* @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);
}
if(StringUtils.equals(str, soleState))
return true;
return false;
}
该功能为,根据传入的值,
如果值为0,则order by questionTime desc 根据字段questionTime排序。
如果值为1,则order by answerTime desc根据字段answerTime排序。
Ognl.java 必须放在class目录,也就是没有包名。
分享到:
相关推荐
**ognl源码详解** ognl(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置...同时,通过对ognl源码的研究,开发者可以更好地掌握动态语言在Java平台上的应用,提高编程技巧和问题解决能力。
在MyBatis中,OGNL主要应用于以下两个场景: **1. 动态SQL表达式**: 动态SQL允许根据条件动态地构建SQL语句。例如,当查询一个名为`country`的表时,可以使用`<if>`标签配合OGNL表达式来实现`LIKE`查询: ```...
【标题】"mybatis中使用ognl共4页.pdf.zip" 涉及的主要知识点是MyBatis框架中对OGNL(Object-Graph Navigation Language)表达式的应用。OGNL是一种强大的表达式语言,常用于获取、设置Java对象的属性,以及执行对象的...
MyBatis是一个流行的Java持久层框架,它简化了数据库操作,通过XML或注解的方式将SQL与Java代码绑定,使得开发者能够更专注于SQL本身,而无需...但作为起点,这些基本的jar包已经足够构建一个简单的MyBatis应用程序。
3. mybatis-ognl:OGNL(Object-Graph Navigation Language)用于表达复杂的对象导航和操作。 除此之外,可能还会包含一些第三方库的jar包,如: 1. log4j或logback:日志记录框架,用于调试和问题追踪。 2. slf4j...
在进行MyBatis开发时,基础的jar包是必不可少的,这些jar包提供了MyBatis框架的核心功能,使得开发者能够方便地将数据库操作与应用程序逻辑相结合。下面将详细介绍这个压缩包中的关键知识点。 首先,MyBatis的jar包...
5. `ognl-x.x.x.jar`:Object-Graph Navigation Language,MyBatis使用OGNL作为表达式语言,处理动态SQL和对象属性的获取与设置。 这些jar包共同构成了MyBatis运行的基础环境,确保了与数据库的交互、日志记录以及...
Mybatis使用反射和OGNL表达式来实现这一过程。 7. **ResultSetHandler**: 结果集处理器负责从数据库返回的结果集中提取数据,并将其映射到Java对象。它可以处理单一结果、多个结果或无结果的情况。 8. **...
它提供了Spring与MyBatis的集成,使你可以方便地在Spring应用上下文中管理SqlSessionFactory和SqlSessionTemplate。 4. **persistence-api-1.0.jar**:这是Java Persistence API的实现,MyBatis有时会依赖JPA的一些...
MyBatis能够通过传入的参数动态生成SQL语句,这是通过OGNL(Object-Graph Navigation Language)表达式语言实现的。这种设计让MyBatis具有很好的灵活性和扩展性。参数映射是数据处理层的另一个重要功能,主要涉及...
- ognl-x.x.x.jar:Object-Graph Navigation Language,MyBatis使用OGNL作为表达式语言来访问对象属性。 - ...其他可能的依赖,如 Commons-logging、guava 等。 3. **文档**:可能包含MyBatis的官方文档,如PDF或...
开发者可以通过Spring管理整个应用程序的生命周期,使用Mybatis进行高效的数据库操作,结合DBCP或Pool管理数据库连接,通过Ojdbc6与Oracle数据库交互,最后利用OGNL处理视图层的数据绑定。这种架构模式在实际项目中...
10. **ognl-3.0.6.jar**: Object-Graph Navigation Language (OGNL) 是一个强大的表达式语言,MyBatis使用它来处理动态SQL中的表达式,如参数绑定和结果集映射。 以上这些库共同构成了MyBatis运行环境的基本组件,...
这个"mybatis+struts2整合demo"是为了帮助初次接触MyBatis的开发人员更好地理解和应用这两款框架。 1. MyBatis整合:MyBatis的核心是SQL映射文件和SqlSessionFactory。在整合过程中,我们需要配置MyBatis的主配置...
7. **ognl-*.jar**: OGNL(Object-Graph Navigation Language)是MyBatis中的表达式语言,用于在SQL语句中动态设置参数或获取结果集字段。 8. **commons-logging-*.jar**: Apache Commons Logging,一个轻量级的...
在本篇关于"MyBatis(三)"的文章中,我们将深入探讨MyBatis框架与OGNL(Object-Graph Navigation Language)以及log4j日志库的结合使用。MyBatis是一个优秀的持久层框架,它简化了Java开发中的数据库操作,允许开发者...
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...
至于`ognl`库,它是Object-Graph Navigation Language的缩写,是一个强大的表达式语言,常用于Spring MVC中的模型绑定和数据访问。在MyBatis中,虽然不是直接使用,但在某些自定义插件或者复杂逻辑处理中可能会用到...
9. **ognl-x.x.x.jar**:OGNL(Object-Graph Navigation Language)是MyBatis用来解析和执行动态SQL表达式的库。它可以处理复杂的属性导航和表达式语言。 以上这些jar包构成了MyBatis运行的基础,确保它们在项目类...
6. **ognl-x.x.x.jar**:Object-Graph Navigation Language,MyBatis的表达式语言,用于动态SQL的构建。 此外,还有一些其他可能的依赖,如`asm-x.x.x.jar`(用于动态字节码操作)、`guava-x.x.x.jar`(Google的...