Spring框架引入MyBatis和多层架构解析并替代JDBC-TEMPLATE-----Spring框架

132 篇文章 0 订阅
131 篇文章 0 订阅
为什么要分层
降低程序耦合度,提高代码的扩展力,提高代码的复用性
表现层(UI层),业务逻辑层(BLL),数据访问层(持久层DAL)DAO进行CRUD
持久层框架:Mybatis,Hibernate(配置太过复杂,上升到一对多,多对一,多对多关系,配置过于复杂,效率也没有Mybatis高)
JOOQ,Guzz,Spring Data,Active JDBC
JDBC的不足,我们的SQL语句写在了JAVA程序内部,一旦根据业务修改时,原本写的JDBC连接数据库的SQL语句就不能用了
这就破坏了OCP原则(开闭原则),还有封装重复的代码
Mybatis本质上就是对JDBC的封装,通过Mybatis完成CRUD,负责持久层
ORM:Object(虚拟机中的Java对象),Relational(关系型数据库)
Mapping(将Java虚拟机中的对象映射到数据库中的一方记录,或是将数据库表映射到Java虚拟机的一个Java对象)
Mybatis框架就是一个ORM框架,将数据库表的一条记录和java对象映射起来
Hibernate框架就是一个全自动的ORM,使用Hibernate框架时不需要手动编写SQL语句,完全自动化的ORM框架
Mybatis是一个半自动的ORM,因为Mybatis框架中的SQL语句是需要手动编写的
Java中与数据库表对应的类,有不同的称呼Bean(豆子),pojo(普通java类),domain(领域模型)
MyBatis的特点:
支持定制化SQL,储存过程,基本映射以及高级映射
避免了几乎所有的JDBC代码手动设置参数以及获取结果集
支持XML开发,支持注解式开发
将java的POJOS,简单普通的java对象映射成数据库中的记录
体积小好学,完全SQL解耦合,提供了基本映射标签,提供了高级映射标签
提供了XML标签,支持动态SQL编写
为什么要分层
降低程序耦合度,提高代码的扩展力,提高代码的复用性
表现层(UI层),业务逻辑层(BLL),数据访问层(持久层DAL)DAO进行CRUD
持久层框架:Mybatis,Hibernate(配置太过复杂,上升到一对多,多对一,多对多关系,配置过于复杂,效率也没有Mybatis高)
JOOQ,Guzz,Spring Data,Active JDBC
JDBC的不足,我们的SQL语句写在了JAVA程序内部,一旦根据业务修改时,原本写的JDBC连接数据库的SQL语句就不能用了
这就破坏了OCP原则(开闭原则),还有封装重复的代码
Mybatis本质上就是对JDBC的封装,通过Mybatis完成CRUD,负责持久层
ORM:Object(虚拟机中的Java对象),Relational(关系型数据库)
Mapping(将Java虚拟机中的对象映射到数据库中的一方记录,或是将数据库表映射到Java虚拟机的一个Java对象)
Mybatis框架就是一个ORM框架,将数据库表的一条记录和java对象映射起来
Hibernate框架就是一个全自动的ORM,使用Hibernate框架时不需要手动编写SQL语句,完全自动化的ORM框架
Mybatis是一个半自动的ORM,因为Mybatis框架中的SQL语句是需要手动编写的
Java中与数据库表对应的类,有不同的称呼Bean(豆子),pojo(普通java类),domain(领域模型)
MyBatis的特点:
支持定制化SQL,储存过程,基本映射以及高级映射
避免了几乎所有的JDBC代码手动设置参数以及获取结果集
支持XML开发,支持注解式开发
将java的POJOS,简单普通的java对象映射成数据库中的记录
体积小好学,完全SQL解耦合,提供了基本映射标签,提供了高级映射标签
提供了XML标签,支持动态SQL编写
mybatis引入依赖
spring-context,spring-jdbc,mysql驱动,德鲁伊连接池
mybatis,mybatis-spring(最重要的,mybatis提供的与Spring框架集成的依赖)
mapper(dao),service,serviceImpl,pojo(bean)
pojo(bean):属性私有化,提供get和set方法和toString
mapper:定义接口,定义方法
mapper配置文件:在配置文件中配置命名空间,以及每一个方法对应的sql

mybatis引入依赖
spring-context,spring-jdbc,mysql驱动,德鲁伊连接池
mybatis,mybatis-spring(最重要的,mybatis提供的与Spring框架集成的依赖)
mapper(dao),service,serviceImpl,pojo(bean)
pojo(bean):属性私有化,提供get和set方法和toString
mapper:定义接口,定义方法
mapper配置文件:在配置文件中配置命名空间,以及每一个方法对应的sql
分页实现原理
页码PageNum(用户会发送请求,携带页码信息到服务器后台)
每页显示的记录条数:pageSize,例如百度默认就是每页展示10条数据记录
实际上每一次在进行分页请求发送的时候,都是要发送两个数据的
页码pageNum发送给服务器,每页显示的记录条数PageSize也要传送给服务器
前端发送的表单数据格式
uri?pageNum=1&pageSize=10
request.getParameter("pageSize")
再将这个PageSize和PageNum先后传输即可
mysql的分页sql怎么写limit关键字语法格式如下
limit 开始下标,显示的记录条数
limit startIndex,pageSize
select * from t_car limit 0,3;
如果limit后面只有一个数字,就是开始下标默认从0开始,然后取这个数字条数
select * from t_car limit 3;和select * from t_car limit 0,3;是语义相同的两句
假设每页显示pageSize条记录
第PageSize页,limit Index,pageSize
startIndex的数值永远都是pageNum-1 * pageSize就是我们的startIndex
就可以实现动态的数值了

分页实现原理
页码PageNum(用户会发送请求,携带页码信息到服务器后台)
每页显示的记录条数:pageSize,例如百度默认就是每页展示10条数据记录
实际上每一次在进行分页请求发送的时候,都是要发送两个数据的
页码pageNum发送给服务器,每页显示的记录条数PageSize也要传送给服务器
前端发送的表单数据格式
uri?pageNum=1&pageSize=10
request.getParameter("pageSize")
再将这个PageSize和PageNum先后传输即可
mysql的分页sql怎么写limit关键字语法格式如下
limit 开始下标,显示的记录条数
limit startIndex,pageSize
select * from t_car limit 0,3;
如果limit后面只有一个数字,就是开始下标默认从0开始,然后取这个数字条数
select * from t_car limit 3;和select * from t_car limit 0,3;是语义相同的两句
假设每页显示pageSize条记录
第PageSize页,limit Index,pageSize
startIndex的数值永远都是pageNum-1 * pageSize就是我们的startIndex
就可以实现动态的数值了
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:13306/spring6
jdbc.username=root
jdbc.password=abc123

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:13306/spring6
jdbc.username=root
jdbc.password=abc123
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值