---恢复内容开始---
在原生的浏览器-服务器结构中,使用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层就制作好了