zoukankan      html  css  js  c++  java
  • 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层就制作好了

  • 相关阅读:
    1.27
    1.25
    Representation Learning with Contrastive Predictive Coding
    Learning a Similarity Metric Discriminatively, with Application to Face Verification
    噪声对比估计(负样本采样)
    Certified Adversarial Robustness via Randomized Smoothing
    Certified Robustness to Adversarial Examples with Differential Privacy
    Dynamic Routing Between Capsules
    Defending Adversarial Attacks by Correcting logits
    Visualizing Data using t-SNE
  • 原文地址:https://www.cnblogs.com/waibangma/p/11356115.html
Copyright © 2011-2022 走看看