zoukankan      html  css  js  c++  java
  • springMVC和mybatis的原理

    mybatis是什么?

             mybatis是一个持久层框架,是apache下的开源项目,前身是itbatis,是一个不完全的ORM框架,mybatis提供输入和输出的映射,需要程序员自己写sql语句,mybatis重点对 sql语句的灵活操作。

             适合用于:需求变化频繁, 数据模型不固定的项目,例如:互联网项目。

    mybatis架构?

             SqlMapConfig.xml(名称不固定),配置内容:数据源、事务、properties、typeAliases、settings、mapper配置。

             SqlSessionFactory--会话工厂,作用是创建SqlSession,实际开发中以单例模式管理 SqlSessionFactory。

            

             SqlSession--会话,是一个面向用户(程序员)的接口,使用mapper代理方法开发是不需要程序员直接调用sqlSession的方法。是线程不安全,最佳适用场合方法体内。

    mybatis开发dao的方法:

             1、原始dao开发方法,需要程序员编写dao接口和实现类,此方法在当前企业中还有使用,因为ibatis使用的就是原始dao开发方法。

             2、mapper代理方法,程序员只需要写mapper接口(相当于dao接口),mybatis自动根据mapper接口和mapper接口对应的statement自动生成代理对象(接口实现类对象)。

             开发需要遵循规则:

              1)mapper.xml中namespace是mapper接口的全限定名

              2)mapper.xml中statement的id为mapper接口方法名

              3)mapper.xml中statement的输入映射类型(parameterType)和mapper接口方法输入参数类型一致

              4) mapper.xml中statement的输出映射类型(resultType)和mapper接口方法返回结果类型一致

    resultType和resultMap都可以完成输出映射:

             resultType映射要求sql查询的列名和输出映射pojo类型的属性名一致

             resultMap映射时对sql查询的列名和输出映射pojo类型的属性名作一个对应关系。

    动态sql:

             #{}和${}完成输入参数的属性值获取,通过OGNL获取parameterType指定pojo的属性名。

        #{}:占位符号,好处防止sql注入

             ${}:sql拼接符号

             if

             where

             foreach

    springmvc框架:

    用户请求url到DispatcherServlet前端控制器,相当于中央调度器,降低系统各组件之间耦合度

    DispatcherServlet前端控制器通过HandlerMapping根据url找到Handler。

    DispatcherServlet前端控制器通过HandlerAdapter处理器适配器执行Handler。

    DispatcherServlet前端控制器拿着Handler返回的ModelAndView通过视图解析器ViewResolver去进行视图解析。

    视图解析:将程序中写的逻辑视图名,转成真正的视图(springmvc通过view表示各各不同类型的视图)。

    DispatcherServlet前端控制器调用View的渲染方法进行视图渲染(将ModelAndView中的Model放到request域)。

    要掌握springmvc的注解开发,企业中常用springmvc注解开发。

    使用专门注解处理器映射器(RequestMappingHandlerMapping)和处理器适配器(RequestMappingHandlerAdapter)。

    <mvc:annotation-driven/>可以代替上边的处理器映射器和适配器的配置。

    在Handler(Controller)中定义很多的方法,一个方法通过RequestMapping和url进行映射。

    方法返回值:ModelAndView、string(jsp的逻辑视图名)、void(通过response将数据输出成json)

    方法输入参数(形参):springmvc需要将请求的key/value(串,id=001&type=t002)、解析、绑定到Handler(Controller)中方法的形参上。

    springmvc默认支持多类型的参数绑定。

    默认支持哪些类型:

    HttpServletRequest、response、session、Model(用于将数据填充到request域)

    @requestParam注解:用于绑定单个请求参数,常用于简单类型参数(Integer、String 、Float。。。)绑定。

    不用 @requestParam要求请求参数的名称和方法形参名一致方可绑定。

    对于简单类型参数中的日期型,建议使用自定义参数绑定,对日期型数据个化定义日期的格式。

    自定义参数绑定:建议使用Convertor进行参数绑定。

    还可以绑定pojo、包装的pojo。

  • 相关阅读:
    2015-01-27-从实验出发理解buffer与cache区别-吴伟顺
    【实习记】2014-09-26恢复linux下误删的ntfs盘中的文件
    【实习记】2014-09-24万事达卡bin查询项目总结
    【实习记】2014-09-04浏览代码查middle资料+总结我折腾过的源码浏览器
    【实习记】2014-09-01从复杂到简单:一行命令区间查重+长整型在awk中的bug
    【实习记】2014-08-29算法学习Boyer-Moore和最长公共子串(LCS)
    【实习记】2014-08-28知值求范围问题
    【实习记】2014-08-27堆排序理解总结+使用typedef指代函数指针
    【实习记】2014-08-26都是回车惹的祸——shell脚本必须是unix行尾
    【实习记】2014-08-24实习生无法映射磁盘替代方案rsync+非默认端口22设置
  • 原文地址:https://www.cnblogs.com/fengli9998/p/6648108.html
Copyright © 2011-2022 走看看