前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC综合例题

JDBC综合例题

作者头像
端碗吹水
发布2020-09-23 11:01:51
5030
发布2020-09-23 11:01:51
举报
文章被收录于专栏:程序猿的大杂烩

JDBC综合例题

这个综合例题主要就是使用JDBC的方式来对数据库表格进行增、删、查、改操作,其中还要逐个对这些方法进行测试,所以还要编写测试用例。编写这个例题主要意义是练习和进一步熟悉JDBC对数据库表格进行增、删、查、改操作的方式,巩固JDBC这个知识点。

这个例题里要用到的技术有:Maven、DBUnit、C3P0连接池、Log4j、MySQL数据库。

1.先准备一个干净的数据库和两个表格,并且给这两个表格构建关联关系:

01dfbf308cfbc1cc7d7d1f9e51caf1d0.png
01dfbf308cfbc1cc7d7d1f9e51caf1d0.png
e1cdded973140ee0607ccb705693fa34.png
e1cdded973140ee0607ccb705693fa34.png

2.创建Maven工程,并配置好所有的依赖包:

7601bc4a759437ce4e341b5451510a49.png
7601bc4a759437ce4e341b5451510a49.png

配置好依赖包:

5155e91bb5d7392289fa41a9252fa987.png
5155e91bb5d7392289fa41a9252fa987.png

3.在源码文件夹和测试源码文件夹里创建好相应的包(package),以便分类,免得所有类都挤在一起显得乱糟糟的:

68e4b8d4d297d5d1ff80909552235ba3.png
68e4b8d4d297d5d1ff80909552235ba3.png

源码文件夹下的包:

c3p0manager 这个包是用来放连接对象管理类的

org.zero01.iuds 这个包是用来放封装类和功能类的

exception 这个包是用来放自定义异常类的

测试源码文件夹下的包:

org.zero01.test 这个包是用来放测试用例类的

  4.在c3p0manager 包下创建一个类,这个类用于通过C3P0连接池获得数据库连接对象,并且这个类是单例模式:

代码示例:

5b453cd763058549454c975d625bde91.png
5b453cd763058549454c975d625bde91.png
aac03bb5d0897611f315673eefe7d832.png
aac03bb5d0897611f315673eefe7d832.png

5.编写两个表格的数据封装类:

Cls代码示例:

973d7a079adc8926a36a33835d910be2.png
973d7a079adc8926a36a33835d910be2.png

udent代码示例:

fba35ec68e4386ea6efa518fc0865e45.png
fba35ec68e4386ea6efa518fc0865e45.png
7fccb6a409024d1e19e0f3758d605280.png
7fccb6a409024d1e19e0f3758d605280.png

6.编写对Cls表格操作的功能类:

1f5f19e6b2f8334305bf7aa68f155b6b.png
1f5f19e6b2f8334305bf7aa68f155b6b.png
d7224ad7ca95593be9ab5c8e73156f27.png
d7224ad7ca95593be9ab5c8e73156f27.png
647aa4d9599b91a71278762163bb5a3f.png
647aa4d9599b91a71278762163bb5a3f.png
892e8f1c483377ce63cf481648e419d0.png
892e8f1c483377ce63cf481648e419d0.png
d003fe95da57c04c01da4de0831256ac.png
d003fe95da57c04c01da4de0831256ac.png
1171b02d53ecd27841d17655b058d8f5.png
1171b02d53ecd27841d17655b058d8f5.png

7.编写对Student表格操作的功能类:

39713567457b47833be20469ab21e81e.png
39713567457b47833be20469ab21e81e.png
cc8cd63d5bbf22bc0c1928357aac210e.png
cc8cd63d5bbf22bc0c1928357aac210e.png
fd4d62d1e3423e29a382fed39e6b391d.png
fd4d62d1e3423e29a382fed39e6b391d.png
f789071322ae88d1b8c0e6007a812ada.png
f789071322ae88d1b8c0e6007a812ada.png
8c24f0d94103f343087f7d7833730932.png
8c24f0d94103f343087f7d7833730932.png
5c1f9918b646cda219801e4fb0f8e4db.png
5c1f9918b646cda219801e4fb0f8e4db.png
cbe629af6d7d0ab55ab5dec5cfecb708.png
cbe629af6d7d0ab55ab5dec5cfecb708.png

8.在测试源码文件夹下的org.zero01.test包里编写测试类,对两个功能类的方法逐个进行测试:

fcac3b6730ae4aa8ef52c015389885f1.png
fcac3b6730ae4aa8ef52c015389885f1.png
b574f3febefd8dd10840bdee313ec364.png
b574f3febefd8dd10840bdee313ec364.png
8c4ee354dccf67bbb76e6e2165a98579.png
8c4ee354dccf67bbb76e6e2165a98579.png
85b47aabd5cab3bab2d662461e795abb.png
85b47aabd5cab3bab2d662461e795abb.png
61b6118439c36fb688db034e279ef785.png
61b6118439c36fb688db034e279ef785.png
b1cc337869a603271cfda24ad7cb5474.png
b1cc337869a603271cfda24ad7cb5474.png
cf766c95c5196384c723c26dd508c81f.png
cf766c95c5196384c723c26dd508c81f.png
0068f630eec9740186e68aa8bad70710.png
0068f630eec9740186e68aa8bad70710.png
1c83ceeb2258a3f19276b87d6c205c31.png
1c83ceeb2258a3f19276b87d6c205c31.png
4962006088fa5850074cb996c46652d8.png
4962006088fa5850074cb996c46652d8.png
bcf7877f34ac0600a60ecc7346421e9d.png
bcf7877f34ac0600a60ecc7346421e9d.png
eb79da91d2e39f8a7e44d57af085386d.png
eb79da91d2e39f8a7e44d57af085386d.png
4953e8fdd50f5fe3a87a86e5ad934775.png
4953e8fdd50f5fe3a87a86e5ad934775.png
17a043bf0adc958098c7f824c4979d81.png
17a043bf0adc958098c7f824c4979d81.png
e6e79c80791686e5442c286e5a980c80.png
e6e79c80791686e5442c286e5a980c80.png

测试结果:

9dab0305c1f3b7e072dd101984cec572.png
9dab0305c1f3b7e072dd101984cec572.png

测试覆盖率:

83f621b7d8a9e1dc8695a63c655eb3ed.png
83f621b7d8a9e1dc8695a63c655eb3ed.png

日志信息的打印:

9855455c2b96bdd4e92e0f86d214826d.png
9855455c2b96bdd4e92e0f86d214826d.png

提示:我这是已经完成的代码,但是各位在实际编写代码的时候,最好是写一个方法就测试一下,不要全部功能代码写完再写测试用例测试,因为那样一旦出问题了,很多地方的代码都要进行修改,如果写一个方法就测一个方法的话,就只需要针对一个方法进行修改,而其他方法不需要变动,这样效率高一些并且修改代码也轻松些,不用到处修修改改弄得眼花缭乱。

  我在编写C3P0Manager类的时候,犯了一个逻辑上的小错误,在这里记录一下这个错误,出现这个错误是因为我把构建对象的属性声明在了C3P0数据源类变量的前面,在构造器外调用getConnection方法的时候就会抛出空指针异常:

75e530837ae0188a3b1f35ccfa99aa81.png
75e530837ae0188a3b1f35ccfa99aa81.png

图解:

841ca3e93e57d78ba8004ac39ab64c11.png
841ca3e93e57d78ba8004ac39ab64c11.png

正确的声明方式:

f65837639185c729a9bc07695f2f0ea7.png
f65837639185c729a9bc07695f2f0ea7.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/10/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档