实现一个自定义持久层框架

实现一个自定义持久层框架

传统JDBC操作存在的问题

1.连接得不到复用,频繁创建、关闭。
2. sql编写在代码里,维护和修改麻烦。
3.在sql中,要按照?的顺序塞值,并且结果集遍历解析灵活性差。

如何实现一个自定义持久层框架

  1. 分别创建独立的xml文件用于存放数据库连接和sql语句,把sql语句,数据库连接和代码进行了分离。

在这里插入图片描述
在这里插入图片描述

  1. 创建一个Resource类,通过getResourceAsStream方法把xml配置文件信息读取成字节流,然后存入内存。
    在这里插入图片描述

  2. 创建具体数据库连接和sql配置信息java普通类,通过dom4j进行解析,进行分别存储方便后面调用,并把数据库连接放入连接池统一管理,优化了jdbc连接得不到复用的问题。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 创建sqlSessionFactory以及sqlSession接口,编写实现类,封装增删改查方法。
    在这里插入图片描述
    在这里插入图片描述

  4. 在实现类中通过jdk动态代理的方式为dao接口生成对象,通过解析sql配置文件标签的定义枚举类来判定执行的是查询或者修改等等,完成JDBC对数据库操作的封装,这里要注意namespace必须要是dao接口全路径,标签id必须要和dao接口的定义的方法名一致。
    在这里插入图片描述

  5. 通过具体实体类dao接口直接调用对应操作方法注册驱动,获取sql语句,把#{id}转化成mysql能识别的?。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7. 完成sql转化之后,获取预处理对象,在设置参数和封装返回结果集的时候,可以把sql配置信息内入参和返回结果集转化成class对象,通过反射机制,将结果集的元数据根据实体类和数据库表字段对应关系完成封装,优化sql顺序塞值和结果集遍历灵活性差问题,实现自定义持久层框架。
在这里插入图片描述
在这里插入图片描述
8. 测试结果,根据查询条件成果获取数据库对应结果数据

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值