复制三个出来。分别叫做 OrderDaoImpl、ProductDaoImpl、UserDaoImpl 复制这三个出来就是为了解决重复性代码的问题。
每个dao中都有这段代码。这些都是重复性的代码。在我们的实际开发过程中,是可以避免的
延时完 就删掉其他几个实现类。还是保留AccountDaoImpl
复制一个出来,改名叫做2
抽取dao中的重复代码
把公共的代码抽取出来
删除后这里面的就都报错了
还需要提供get方法
然后就可以对dao中的jdbcTemplate进行替换了。使用父类的getJdbcTemplate方法
也可以前面加上super点。表示调用父类的方法
定义DataSource并实现set方法。
如果IDEA没有自动导包的话。这里自己上面手动导入包
这个时候DataSource就有内容了。
new一个jdbcTemplate。里面是支持构造方法初始化的
这里的DataSource虽然声明和赋值了,但是没有用,可以删掉
修改前
修改后。值在accountDao里面注入dataSource,
上面注入dataSource后,它会触发这个的setDataSource
测试
数据被更新了。
spring 的方式
所以这个类通过spring也可以实现这个操作。,把JdbcDaoSupport这个类代码全部注释掉
注释后。dao里面自动导入了一个包
主要作用:去除掉注入和定义的重复代码
区别
区别,如果我是注解的方式。这里我们自己定义的jdbcTemplate可以用Autowired自动注入机那里
一旦继承了spring提供的这个JdbcDaoSupport
想在这里加注解是不可能的了。因为这个位置是spring的jar包中的代码。我们改不了,这里是只读属性的
自己定义的方式可以应用于xml和注解两种方式
一定继承了spring提供的JdbcDaoSupport。再想用注解的方式就变的比较麻烦了。所以这两种dao的区别,。就看你才用哪种方式配置。
如果是注解配置才用,Impl2这的这种方式
如果是xml的配置就才用,继承spring 的jdbcDaoSupport这种方式
以上就是dao编写的两种方式