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目录,也就是没有包名。
分享到:
相关推荐
3. mybatis-ognl:OGNL(Object-Graph Navigation Language)用于表达复杂的对象导航和操作。 除此之外,可能还会包含一些第三方库的jar包,如: 1. log4j或logback:日志记录框架,用于调试和问题追踪。 2. slf4j...
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或...
3. `spring-context`:扩展了`spring-beans`,提供了应用上下文,支持国际化、事件传播、资源加载等功能。 4. `spring-core`:包含了Spring的基本功能,如依赖注入(DI)和资源处理。 5. `spring-expression`(SpEL...
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...
MyBatis默认提供了基于OGNL的表达式引擎,但有时我们可能需要更复杂或特定的逻辑,这时就需要自定义语言驱动。自定义语言驱动可以让开发者扩展MyBatis的动态SQL能力,实现更加个性化的SQL生成策略。 3. **循环查询...
Struts2、Spring和MyBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制层、业务层和服务层。...这种架构在实际开发中具有良好的可扩展性和可维护性,是许多企业级应用的首选方案。
MyBatis通过反射和OGNL表达式解析参数。 7. **ResultSetHandler**: 处理SQL查询的结果集,将数据库返回的数据转化为Java对象。它实现了多种策略,如Map、List、单个对象等。 8. **TypeHandler**: 类型处理器负责...
此外,MyBatis还依赖于其他一些JAR,如`ognl`(对象图形导航语言)用于表达式处理,以及`log4j`或`slf4j`等日志库。 整合过程中,数据库驱动JAR包也是必不可少的,例如MySQL的驱动`mysql-connector-java`。为了实现...
整合这三个框架可以让开发者更高效地构建可维护、可扩展的Web应用程序。本资源提供的"struts2+spring+mybatis整合所需的基本jar包"包含了进行这种整合所需的库文件。 首先,Struts2是基于MVC设计模式的开源Web应用...
这个压缩包包含了使用MyBatis进行开发所需的完整jar包,使得你可以直接将其添加到项目的lib目录下,快速构建基于MyBatis的半自动框架应用。 首先,我们来详细了解一下压缩包中包含的各个文件: 1. **ant-1.9.6.jar...
Struts2、Spring4、Spring MVC、Hibernate4和MyBatis是Java开发中非常重要的五个框架,它们分别在Web应用的各个层面提供了强大的支持。这三套框架组合在一起,可以构建出高效、灵活且可维护的Java Web应用程序。 1....
MyBatis 使用反射和OGNL(Object-Graph Navigation Language)来处理参数映射。 7. **ResultSetHandler**: ResultSetHandler 负责解析 SQL 查询的结果集,将其转换为 Java 对象。MyBatis 支持多种结果映射策略,...
MyBatis动态SQL的实现主要依赖于强大的**OGNL**(Object Graph Navigation Language)表达式语言。OGNL是一种用于访问和操作对象属性的强大语言,在MyBatis中被用来动态构建SQL语句。通过OGNL,可以根据传入的参数和...
Struts2、Spring3 和 MyBatis3 是Java Web开发中的三大主流框架,它们的集成应用可以构建出高效、灵活的后端系统。Struts2 作为MVC(Model-...通过合理的配置和设计,可以构建出功能丰富、可扩展性强的企业级Web应用。
Struts2和MyBatis是两个非常重要的Java Web开发框架,它们在构建高效、可维护的Web应用程序中扮演着核心角色。在这个名为“struts2 mybatis北京做的项目”的实例中,开发者结合了这两个框架来完成一个实际的项目。...
4. **MyBatis 插件**:MyBatis 允许开发者创建插件来扩展其功能,插件主要基于 Java 动态代理技术实现。开发者需要实现 `Interceptor` 接口,编写 `intercept()` 方法,然后通过注解指定要拦截的接口和方法。在 ...
Struts 2.3.1.2、Spring 3.1.1 和 ...通过这个基础框架,开发者可以快速搭建一个具备基本功能的Java Web应用,并在此基础上进行业务逻辑的开发和扩展。提供的DEMO实例可以作为参考,帮助理解各个组件如何协同工作。
通过以上步骤,可以成功地将 Spring、SpringMVC 和 MyBatis 进行整合,构建出一个功能完整、易于扩展和维护的 Java Web 应用程序。在实际开发过程中,还需要考虑异常处理、事务管理、安全认证等方面的问题,以确保...
然而,这种方式在分页查询时受限,Mybatis框架明确禁止了嵌套对象结果集的分页,这可能限制了其在某些场景下的应用。 再者,Mybatis采用了强大的OGNL(Object-Graph Navigation Language)表达式,这使得配置文件...