系列文章目录
前言——完善查找所有用户
我们接着上一篇,再写一个查找所有用户
我们以前获取一个表的所有数据是要写一个hql的(hibernate特有的)
然后测试一下
同理获取所有用户信息
至此,Dao这块的设计模式就全部写完了
service是怎么样的呢,实际上它跟Dao有点不一样,那具体是怎么不一样呢?我们具体来看
一、Service高级实现原理
service怎么就不一样了呢?因为service拿到的不是模板了,它拿到的是IUserDao
我们先分析原理
但是跟Dao层相比较有一个地方不一样
二、Service高级实现详细代码
公共的直接拷贝 Dao层的IBaseDao的代码,然后改改就行了
接下来我们写IUserService
这个具体的接口里面是有可能有它特殊的方法的(就是除了公共的增删改查之外)
我们在这个里面去声明好抽象方法
接下来我们就写实现类,公共的实现类
注意下面这里
下面去写具体的实现类
我们先写一下UserServiceImpl
然后在这里面去实现所有的方法(因为之前的BaseServiceImpl是抽象的,没有去实现具体的方法,所以这里就全部一起实现了)
那么我们想想,在这个具体实现的UserServiceImpl里面我们需要改什么东西
首先是不是要整一个Dao,下面我们整一个
然后那些公用的方法就简单了,这里的逻辑层,其实就相当于一个桥梁,直接调用dao层就行了
另外service和dao层一样 也搞个实现包
这样
下一步,测试业务
在此之前一个是要创建service(这里具体就是指UserServiceImpl)的bean
另一个是要给service创建事务
这里这两个我们都用注解去完成
前提就是我们这两个都开启了,可以使用注解
这里注释掉事务的注解,扔然能够正常运行
但是我们要想想怎么彻底解决
名字改一下就好了
至此service这块就搞定了
注意
如果这里报错
我们一定要知道为什么会报错,思路应该定在,applicationContext.xml(即beans.xml)上,一定是它有问题,导致自动注入出了问题
而我们去检查映射文件applicationContext.xml(即beans.xml),没有发现问题的时候,肯定是上一层的注解漏掉了,我们这里就是如此
如下:
还需注意,这里的事务注解是可以不写的,但是不写就,没有事务功能