Mybatis动态sql语句的使用

小课堂

分享人:尤炳晓

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

先介绍下背景

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

2.知识剖析

MyBatis 的强大特性之一便是它的动态SQL。按照不同的条件对SQL语句进行拼接,从而实现SQL语句的变化。与静态SQL相比,动态SQL的优势是可以根据实际输入的参数自动调整SQL语句,从而减少程序猿的工作量。举个例子:学生信息有【学号】,【姓名】,【性别】,【班级】等信息,当我们需要更新一个学生的班级信息时,如果使用静态SQL语句,我们需要提供这个学生的所有信息,才能够修改他的【班级】信息,如果使用动态SQL语句,我们只需要提供他的主键【学号】和新的【班级】信息,就可以了。

2.知识剖析

常用标签:if;choose、when、otherwise;trim、where、set;foreach;bind

2.知识剖析 if 标签

有条件的执行SQL语句

2.知识剖析 choose,when,otherwise 标签

有些时候,我们不想用到所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。

2.知识剖析 trim,where,set 标签

当有很多条if语句时,如果只有几条成立,那么拼装而成的sql语句将会出现语法问题,比如“,”逗号会多出来,sql中的where会出现在sql语句的末尾。where标签会自动添加一个WHERE,如果if语句中有AND,还会将AND删掉。

3.常见问题

4.解决方案

多练多写

5.编码实战

demo

6.扩展

7.参考文献

http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html https://www.cnblogs.com/dongying/p/4092662.html 官方文档 等

8.更多讨论

demo中存在的问题。

Thanks

By : byou