框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

1:动态sql使用(foreach标签的使用)

2:mybaitis与hibernate的比较及应用场景

3:总结&下节预告

本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十六篇 mybatis 常用标签三及与hibernate的比较

声明:本文系凯哥Java(www.kaigejava.com)原创。转载请注明出处

一:动态sql使用(foreach标签的使用)

1.1:为什么要有foreach标签?

需求:

根据ids(多个id)查询用户信息。比如查询id为16 /22 /26/28 /29这五个id的用户信息。

正常的sql语句:我们可以想到使用in来处理

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

但是mybatis怎么处理这些呢?

这个时候就可以使用foreach标签了。

foreach标签主要用于构建类似于in条件的,该标签可以在再sql中对集合进行迭代(遍历)

1.2:使用mybatis查询出16 /22 /26/28 /29这五个id的用户信息。

Mapper-User.xml文件中:

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

说明:

<foreach>:声明开始使用foreach标签

collection:需要迭代的对象

其属性值有三个,分别为:list、array、map三种

分别对应的参数类型为:list、数组、map集合

item:表示迭代(循环)过程中每一个元素的别名

index:表示迭代(循环)过程中每次迭代的位置(下标)(可以理解为:for循环中的i)

open:前缀

close:后缀

separator:分隔符。表示迭代时候每个元素之间用什么分隔

使用场景:通常可以用于批量删除、添加等操作中。

1.3:测试代码:

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

1.4:执行后的sql语句:

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

框架学习系列 mybatis 第十六篇 mybatis 常用标签三及与hibernate的比较

二:mybaitis与hibernate的比较及应用场景

2.1:mybatis的特点:

1:学习门槛低,学习成本低。只要有sql基础。就可以学习mybatis了,而且还很容易上手

2:通过直接编写sql语句,可以直接对sql进行性能的优化

3:由于sql语句是直接编写的,所以灵活性很高多变。便于代码的维护

4:缺点。有用sql是直接编写的。如果sql语句写的不是通用的,那么移植到其他数据库(如mysql/sqlserver/oracle)的时候需要修改sql语句的。一句话,可移植性不好

2.2:hibernate的特点:

1:标准的ORM框架,开发者不需要编写sql语句。(HQL语句可以直接完成)

2:可移植性好。因为使用的是HQL语句。具有很好的数据库无关系。当迁移数据库后,不需要再次编写代码

3:学习门槛高。需要对数据库关系模型有良好的基础,而且在设置OR映射的时候需要考虑好性能和对象模型的权衡。

4:缺点。因为使用的是HQL语句,开发者不需要编写sql语句。所以想要对sql进行性能优化的时候,就麻烦了。

2.3:mybaits的应用场景

因其sql可以自己编写及其轻量级框架,所以在需求多变的互联网项目中应用的较为广泛。

比如:电商项目多是用mybatis的

2.4:hibernate的应用场景

需求明确、业务固定的项目。例如OA项目、ERP项目等。

三:总结

通过本文学习我们需要掌握的:

1:foreach标签的使用(重要)

需要理解的是:

1:mybatis和hibernate各种的优缺点及使用场景

下节预告:

通过这十六篇的学习。我们对mybatis简单的使用以及掌握了。接下来我们将要学习高级篇(一对一、一对多、多多的的映射)。欢迎大家继续学习。同时也欢迎大家关注凯哥Java