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、栈与堆的概念
2、LogStash plugins-inputs-file介绍(三)
3、PHP对MYSQL数据库进行事务处理及表锁定
4、openstack网络基本概念(转)
5、【D3.js】Focus + Context 折线图


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号