1:Dynamic SQL:动态SQL对熟悉JSTL或基于xml的文本处理的程序员来说是很好理解的,采用了基于OGNL的表达式后更是让XML mapper的配置减少到原来的一半。示例代码如下:
<select id=”findActiveBlogWithTitleLike” parameterType=”Blog” resultType=”Blog”>
SELECT * FROM BLOG
WHERE state = ‘ACTIVE’
<if test=”title != null”>
AND title like #{title}
</if>
</select>
2:Maper Annotations:这个功能比较鸡肋,至少偶是这样认为。程序员在代码中写sql,这个给人的感觉是回到了jdbc的环境中,而且 Annotaciton和java代码高度耦合了,并非配置优先。
3:SelectBuilder:用java代码来写sql,它使用static import和ThreadLocal变量的方式来保证语法的简介,很容易的去处理交织的条件和SQL格式化。
public String selectBlogsSql() {
BEGIN(); // Clears ThreadLocal variable
SELECT("*");
FROM("BLOG");
return SQL();
}
表达的结果是:select * from blog;
4:暴露底层接口:ibatis可以通过实现一些接口来拦截执行某些特定的功能点,默认情况下有4种:
* Executor(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) * ParameterHandler(getParameterObject, setParameters) * ResultSetHandler(handleResultSets, handleOutputParameters) * StatementHandler(prepare, parameterize, batch, update, query)
具体的实例请看:ibatis user guide
本文介绍了MyBatis框架中的动态SQL特性,包括基于XML的动态SQL配置、Mapper注解、SelectBuilder工具类以及如何通过实现特定接口来拦截执行过程。通过示例展示了动态SQL的简洁性和灵活性。
1601

被折叠的 条评论
为什么被折叠?



