动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。
使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。
如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
MyBasicTest.java
OGNL
OGNL( Object Graph Navigation Language )对象图导航语言, 这是一种强大的表达式语言,通过它可以非常方便的来操作对象属性。 类似于我们的EL, SpEL等。
注意: xml中特殊符号如”,>,<等这些都需要使用转义字符
访问集合伪属性:
查询的时候如果某些条件没带可能sql拼装会有问题
EmployeeMapperDynamicSQL.xml
EmployeeMapperDynamicSQL.java
MyBasicTest.java
后面多出的and或者or where标签不能解决
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
MyBasicTest.java
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
MyBasicTest.java
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
MyBasicTest.java
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
MyBasicTest.java
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
注意,MySQL数据库连接属性allowMultiQueries=true,才能批量删除,修改数据。(在连接MySQL的URL后添加参数)。
MyBasicTest.java
Oracle数据库批量保存:
Oracle支持的批量方式:
不只是方法传递过来的参数可以被用来判断,
mybatis默认还有两个内置参数:
EmployeeMapperDynamicSQL.java
EmployeeMapperDynamicSQL.xml
bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。
EmployeeMapperDynamicSQL.xml
抽取可重用的sql片段。方便后面引用:
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/6622.html