Mybatis框架(入门)

(一)MyBatis 概述

           MyBatis 本是Apache的一个开源项目 iBatis2010年这个项目由apache software foundation 迁移到了google code,并

且改名为MyBatis(支持普通 SQL查询,存储过程和高级映射的优秀持久层架),再后来托管到github下

       (1)MyBatis对JDBC的操作数据库的过程进行封装,使开发者只需关注 SQL 本身(通过mybatis提供的映射方式,自由灵

活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句),而不需要花费精力去处理例如注册驱动、创建

connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码;

        (2)Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中的sql进行映射生成

终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回(输出映射)
   
(二)MyBatis 框架架构

            

(三)MyBatis 执行流程

                      

          MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,

一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过

SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession

(四)MyBatis 的优缺点

     1、优点:

                (1)简单易学:mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现;
               (2)灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多;
               (3)解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性;
               (4)提供映射标签,支持对象与数据库的orm字段关系映射;
               (5)提供对象关系映射标签,支持对象关系组建维护;
               (6)提供xml标签,支持编写动态sql

         2、缺点:

               (1)编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此;
               (2)SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库;
               (3)框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改;
               (4)二级缓存机制不佳

            3、总结:  

             mybatis的优点同样是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限(mybatis没有hibernate那么强大,但是mybatis最大的优点就是简单小巧易于上手,方便浏览修改sql语句)

            mybatis和hibernate本质区别和应用场景

             (1)hibernate:是一个标准ORM框架(对象关系映射),入门门槛较高的,不需要程序写sql,sql语句自动生成(对sql语句进行优化、修改比较困难的)
                    应用场景:适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa。                        

             (2)mybatis:专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis也可以实现映射(输入映射、输出映射)
                    应用场景:适用与需求变化较多的项目,比如:互联网项目

               企业进行技术选型,以低成本高回报作为技术选型的原则,根据项目组的技术力量进行选择。

(五)MyBatis 入门程序

             

     1、 parameterType和resultType

       (1)parameterType:在映射文件中通过parameterType指定输入参数的类型,定义输入到sql中的映射类型,#{id}表示使用

perparestatement设置占位符并将输入变量id传到sql输入映射

     (2)resultType:在映射文件中通过resultType指定输出结果的类型,定义结果映射类型输出映射

      2、#{} 和 ${}

      (1)#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap如果接收简单类型,#{}中可以写成

value或其它名称#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值

       (2)${}表示一个拼接符号,会引用sql注入,所以不建议使用${} (    ${}接收输入参数,类型可以是简单类型,pojo、

hashmap,如果接收简单类型,${}中只能写成value,${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属

性...的方式获取对象属性值)

        3、 selectOne和selectList

               selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对

象)。selectList表示查询出一个列表(多条记录)进行映射,如果使用selectList查询多条记录,不能使用selectOne。
                
        

猜你喜欢

转载自blog.csdn.net/qq_25523265/article/details/83628617