• javaweb高级学习 mybatis


    ---恢复内容开始---

    在原生的浏览器-服务器结构中,使用mvc分层思想,我们将整个程序分为控制层,业务层,持久层三层

    控制层(servlet) 负责接收请求,将用户从浏览器端发送来的请求进行处理(调用业务层)和响应,反馈给浏览器,

    业务层(service) 负责处理 业务,调用dao层,得到结果返回给控制层

    持久层(dao)负责写sql语句,连接数据库(JDBC),在数据库上执行并得到结果,返回给业务层

    这样很麻烦,原生的代码不容易修改,而且jdbc这一套流程是死的,岂可将大好时间浪费在这些重复无意义的劳动上?

    试想,在写功能时,遇到大量重复代码,第一件事应该是什么?别的不说,至少为了主流程清晰,应该把重复的事封装成方法,用的时候直接调用.

    在服务器端,有人也做出了如此操作.只是不再是封装成方法.而是配成xml文件

    这里不得不提一下xml,在程序上线时,修改源码是一件麻烦事.有时需要关闭项目重启服务器,重新部署源码.这个代价还是很大的.而有了xml,

    我们可以把属性和方法写在xml里(配置文件),不必关闭服务器也可实现修改功能的目的.

    在这里,我们即将使用的mybatis.xml就是这样的配置文件.

    使用mybatis方式,去除了原生代码的dao层,只需要新建一个mapper包,包内写接口和对应的.xml(如UserMapper和UserMapper.xml),UserMapper接口里写抽象方法

    UserMapper.xml里写配置,id写要执行的方法名,增删改查有对应的标签.

    那原本是业务层调用dao层,现在没有dao层了怎么办?

    这时引入了SqlSession对象,在业务层创建SqlSession对象,创建动态代理,使用代理来调用增删改查的方法,返回结果.再将结果传回控制层,响应.

    如果需要sql带参数,那该怎么处理呢?(这里的基本类型指的是非人为写的类)

    1单参数,基本类型,只需要在对应标签的对应sql语句的参数位置用#{0},表示第一个参数

    2单参数,引用类型,只需要在对应位置写#{键名或属性名}表示

    3双参数,基本类型,#{0},#{1}

    4双参数,引用类型,#{param1.键名} #{param2.键名}

    5双参数一个基本一个引用,#{param1} #{param2.键名}

    这样一个靠mybatis动态生成的dao层就制作好了

  • 相关阅读:
    CALayer 的一些重要属性
    [Google] Inorder Successor in Binary Search Tree, Solution
    [LeetCode] Container With Most Water, Solution
    [C++ Summary]
    [LeetCode] Count and Say, Solution
    [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal, Solution
    [LeetCode] Convert Sorted List to Binary Search Tree, Solution
    [FaceBook] Hanoi Moves, Solution
    逻辑题汇总
    [Facebook] Products of all elements
  • 原文地址:https://www.cnblogs.com/waibangma/p/11356115.html
Copyright © 2020-2023  润新知