MyBatis 教程

MyBatis 动态 SQL 介绍

动态 SQL 是 MyBatis 一个强大的特性之一。如果你有使用 JDBC 或其他相似框架的经验,你就明白条件地串联 SQL 字符串在一起是多么的痛苦,确保不能忘了空格或在列表的最后省略逗号。例如:

String sql = "select u.*, b.*, uc.* from `user` u " +
  " JOIN `user_book` ub on u.user_id=ub.book_id" +
  " JOIN `book` b on b.book_id=ub.book_id" +
  " JOIN `book_ext` be on be.book_id=b.book_id" +
  " JOIN `user_contact` uc on uc.user_id=u.user_id";

动态 SQL 可以彻底处理这种痛苦。通常使用动态 SQL 不可能是独立的一部分, MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意映射的 SQL 语句中。

动态 SQL 元素和使用 JSTL(Java server pages standarded tag library,即JSP标准标签库) 或其他相似的基于 XML 的文本处理器相似。 在 MyBatis 之前的版本中,有很多的元素需要来了解。 MyBatis3 大大提升了它们,现在用不到原先一半的元素就能工作了。

MyBatis 采用功能强大的基于 OGNL(Object Graph Navigation Language,对象导航语言)的表达式来消除其他元素。MyBatis 动态 SQL 元素如下:

  • if:作用和 Java 的 if 语句一致,用来根据条件动态决定是否执行 if 语句内部的 SQL 脚本。

  • choose(when,otherwise):作用和 Java 的 switch 语句一致,用来处理多条件判断。

  • trim(where,set):作用和 Java 中 String 类的 tirm() 方法类似,去除 SQL 字符串前后的字符。

  • foreach:作用和 Java 中的 for 语句一致,用来根据传递的列表动态生成批量 SQL 脚本,例如:批量插入

在后续章节将详细介绍上面每个标签的具体用法和注意事项!

说说我的看法
全部评论(

去去去

回复:

很抱歉没有帮助到你,谢谢支持!

关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号