先定义好实体类,我简化了属性:
然后定义接口:
初学JDBC时,都没个dao自己获得数据库连接,自己执行SQL语句,自己关闭资源,这样有两个缺陷。
第一SQL异常无法处理,第二大量的代码是重复的。
第一个问题我们可以定义一个DaoException继承RuntimeException,这样上层就不用捕获SQL异常了。即使换成文件存储数据,也不用更改Service层的代码,真正做到了各层之间的解耦。
第二个问题可以使用Template模式解决。
定义DaoException的代码:
定义与数据库打交道的接口:
MySQL实现:
定义JdbcTemplate类:
定义SuperDao所有dao的父类:
定义代表对象和记录的映射的接口RowMapper:
最后实现UserDao:
最后上个整体架构的类图: