MyBatis中的动态SQL
(1)考察目标
主要考察对mybatis中动态sql的理解与使用。同时,看到动态SQL就要想到静态SQL,知道两者的区别和优劣,知道什么是动态SQL和静态SQL,两者结合起来回答比较好。
(2)题目分析
1)所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程。
2)SQL语句的主体结构,在编译时尚无法确定,只有等到程序运行起来,在执行的过程中才能确定,这种SQL叫做动态SQL
3)静态SQL语句的编译是在应用程序运行前进行的,编译的结果会存储在数据库内部。而程序运行时,数据库将直接执行编译好的SQL语句,降低运行时的开销。
4)MyBatis中用于实现动态SQL的元素主要有:if、where、foreach。
5)另外还要注意一点,在SQL中如果某些参数没有确定,如“select from user where age > ? ”这种语句是静态SQL,不是动态SQL,虽然个别参数的值不知道,但整个SQL的结构已经确定,数据库是可以将它编译的,在执行阶段只需将个别参数的值补充进来即可
(3)应用场景
实际开发中动态sql语句的使用场景非常多,最明显的例子就是多条件查询,其中查询的条件每次并不确定有哪些时。
(4)总结
本题主要考察的是:
mybatis的动态sql语句的使用。