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层就制作好了

 

posted @ 2019-08-15 09:49  外邦马  阅读(182)  评论(0编辑  收藏  举报