大家好,我是一个爱举铁的程序员Shr。
本篇文章将用到前几篇文章介绍过的知识自定义数据访问层框架,建议看这篇文章之前先去了解JDBC元数据和反射。
如果是初学者,觉得JDBC封装数据太麻烦,一个类十多个字段,重复的代码导致浪费了大量时间,那待会我开车的时候你可要抓紧了。
如果你用Hibernate,Mybatis用了两三年还只是停留在使用的情况,看源码太费劲,看一会就想睡觉,本篇文章将带你走进框架底层,探索精彩的世界。
本篇文章较长,耐心看完~~~
源码地址:https://github.com/ShrMus/Dao/tree/master/dao_20180603/src/main/java/com/shrmus/jdbc02
一、新建数据库表
新建名为dao_20180603的数据库,再新建emp表
二、新建类
三、新建数据源类
四、新建数据库连接属性文件
新建文件jdbc.properties,文件和数据源类在同一个目录,文件内容如下:
五、新建数据库连接类
六、新建查询类
这个类用来对数据进行增删改查。
七、测试
看到这里,你已经发现和原先的JDBCUtil完全不一样了,为什么要这么做呢,为了做到功能单一。
后面关键的地方来了。
7.1测试添加员工
7.1.1在查询类中添加代码
7.1.2编写Dao类
7.1.3编写测试类
运行结果:
SQL = insert into Emp(id,name,address,hireDate) values('1','张三','长沙','2018-06-03 23:49:12')
再看数据库:
添加了一条数据。查询类中的inser()方法根据传过来的参数,获取数据库表的主键,再获取字段和字段值,方法内部拼接SQL语句。
7.2测试查询所有员工
7.2.1在查询类中添加代码
7.2.2 编写Dao类
7.2.3编写测试类
在运行这个测试方法之前我又添加了一条数据。
运行结果:
SQL = select id,name,address,hireDate from Emp
Emp [id=1, name=张三, address=长沙, hireDate=2018-06-03 23:49:12.0]
Emp [id=2, name=李四, address=株洲, hireDate=2018-06-04 00:00:18.0]
7.3测试根据主键查询员工
7.3.1在查询类添加代码
7.3.2编写Dao类
7.3.3编写测试类
运行结果:
SQL = select id,name,address,hireDate from Emp where id='1'
Emp [id=1, name=张三, address=长沙, hireDate=2018-06-03 23:49:12.0]
7.4测试修改员工的信息
7.4.1编写查询类
7.4.2编写Dao类
7.4.3编写测试类
运行结果:
SQL = update Emp set name='王五', address='广州', hireDate='2018-06-04 00:05:55' where id='1'
看看数据库:
修改成功了。激动人心吧。以前怎么没发现JDBC元数据这么好使呢。
7.5测试删除员工
7.5.1编写查询类
7.5.2编写Dao类
7.5.3编写测试类
运行结果:
SQL = delete from Emp where id='1'
再看看数据库:
因为是根据主键删除的,所以测试类的员工的名字是李四就忽略了。
总结
如果你仔细看了查询类的代码或者你自己有练习过,你就会发现那些框架是怎样的思路了。XML,注解,映射就都能拨云见日了。以前在Dao类作死地封装数据,现在就轻松多了。
注意事项:
我写的都是基本的增删改查,没有涉及到多表查询的。
目前只支持MySQL
只支持表名和类名一样
只支持表中字段和类的属性名一样
不支持联合主键
未提供连接池
关于JDBC元数据和反射的知识点我就不多说了,可能看不懂的也看不到底下了,如果有疑问可以给我留言。
领取专属 10元无门槛券
私享最新 技术干货