您好,登录后才能下订单哦!
简单理解:
DAO数据库访问对象 实现连接数据库 修改、添加等细节 
service服务层 面向功能 把一个整个服务 细化 调用DAO
其实service其中都是一些方法 去调用DAO 甚至方法名都和DAO中一样的
如某个service是用作用户注册的
其中可能包括检测用户名是否存在和插入用户数据两部分
分别调用DAO中具体实现 操纵数据库
看起来逻辑更清晰而已
进一步说明:
Dao层实现是简单的CRUD操作。相当于sql中的单条select,insert,upate,delete语句。
而service层就是具体业务的实现。一般多次组合dao层的方法(dao层方法达到了重用目的),是多个数据库操作的集合,可以看做数据库中的存储过程,而且事务一般控制在service层。这些数据库操作一起提交或回滚。
当然,简单的系统完全可以不划分service层,只用dao层。但那这样的话,代码从用性就不高。
用户的Dao层
| 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31
 
32
 
33
 
34
 
35
 
36
 
37
 
38
 
39
 
40
 
41
 
42
 
43
 
44
 
45
 
46
 
47
 
48
 
49
 
50
 
51
 
52
 
53
 
54
 
55
 
56
 
57
 
58
 
59
 
60
 
61
 
62
 
63
 
64
 
65
 
66
 
67
 
68
 
69
 
70
 
71
 
72
 
73
 
74
 
75
 
76
 
77
 
78
 
79
 
80
 
81
 
82
 
83
 
84
 
85
 
86
 
87
 
88
 
89
 
90
 
91
 
92
 
93
 
94
 
95
 
96
 
97
 
98
 
99
 
100
 
101
 
102
 
103
 
104
 
105
 
106
 
107
 
108
 
109
 
110
 
111
 
112
 
113
 
114
 
115
 
116
 
117
 
118
 
119
 
120
 
121
 
122
 
123
 
124
 
125
 
126
 
127
 
128
 
129
 
130
 
131
 
132
 
133
 
134
 
135
 
136
 
137
 
138
 
139
 
140
 
141
 
142
 | 
public
class
UserDaoHibernate 
extends
BaseDaoHibernate 
implements
        
IUserDao {
    
/**
     
* 增加用户
     
* 
     
* @param user
     
*/
    
public
Long addUser(User user) {
        
return
addEntityRetVal(user);
    
}
    
/**
     
* 通过id删除用户
     
* 
     
* @param user
     
*/
    
public
void
deleteUser(Long id) {
        
User userPO = (User) getHibernateTemplate().load(
                
User.
class
, id);
        
deleteEntity(userPO);
    
}
    
/**
     
* 删除用户
     
* 
     
* @param user
     
*/
    
public
void
deleteUser(User user) {
        
User userPO = (User) getHibernateTemplate().load(
                
User.
class
, user.getUserid());
        
deleteEntity(userPO);
    
}
    
/**
     
* 更新用户
     
* 
     
* @param user
     
*/
    
public
void
updateUser(User user) {
        
User userPO = (User) getHibernateTemplate().load(
                
User.
class
, user.getUserid());
        
BeanUtil.copyProperties(userPO, user);
        
updateEntity(userPO);
    
}
    
/**
     
* 通过id查询用户
     
* 
     
* @param id
     
* @return
     
*/
    
public
User queryUserById(Long id) {
        
return
(User) getHibernateTemplate().load(User.
class
, id);
    
}
    
    
/**
     
* 通过用户名字查询用户实体   -- 这个方法存在SQL注入攻击问题
     
* @param usernme
     
* @return
     
*/
    
public
User queryUserByName(String username){
        
String hql = 
"select u from User u where u.username = '"
+ username + 
"'"
;
        
return
(User) 
this
.queryObjectByHql(hql);
    
}
    
/**
     
* 查询所有用户
     
* 
     
* @return
     
*/
    
public
List<User> queryAllUser() {
        
return
queryAllEntitys(User.
class
);
    
}
    
/**
     
* 分页查询用户
     
*/
    
public
List<User> queryAllUser(String hql, 
int
currentPage,
            
int
pageSize) {
        
return
queryAllEntitys(currentPage,pageSize,hql);  
//调用的是有currentPage的分页方法
    
}
    
/**
     
* 
     
* 通过用户id查询用户名称,查不到返回 null 
     
* @param id
     
* @return
     
*/
    
public
String queryNameById(Long id){
        
String hql = 
" from User d where d.userId = ?"
;
        
List<?> users = getHibernateTemplate().find(hql,id);
        
if
(users.size()>
){
           
return
((User)users.get(
)).getUsername();
        
}
else
{
           
return
null
;
        
}
        
    
}
    
    
/**
     
* 得到用户分页记录总数
     
* @param parentId
     
* @return
     
*/
    
/*
    
public Long queryTotalNumberOfUser(){
        
String hql = "select count(*) from User";
        
List<?> childNumber = getHibernateTemplate().find(hql);
        
return (Long)childNumber.get(0);
    
}*/
    
    
public int queryAllUserNubmer(String hql){
        
return queryAllEntitysNumer(hql);
    
}
    
    
/**
     
* 查询用户的权限
     
* @param userId
     
* @return
     
*/
    
public List<UserAuth> queryFunctionOnlyByUserId(Long userId){
        
String hql = "select ua from UserAuth ua where ua.userid = " + userId;
        
List<UserAuth>  userAuths = queryAllObjectByHql(hql);
        
return userAuths;
    
}
    
/**
     
* 查询用户的角色
     
* @param userId
     
* @return
     
*/
    
@SuppressWarnings
(
"unchecked"
)
    
public
List<UserRole> queryRoleOnlyByUserId(Long userId){
        
String hql = 
"select ur from UserRole ur where ur.userid = "
+ userId;
        
List<UserRole>  userAuths =  queryAllObjectByHql(hql);
        
return
userAuths;
    
}
    
    
}
 | 
service层,又可细化为查询业务UserHelper,还有增加,更新,删除业务集中在UserFacade中。这里贴出UserHelper.java
| 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31
 
32
 
33
 
34
 
35
 
36
 
37
 
38
 
39
 
40
 
41
 
42
 
43
 
44
 
45
 
46
 
47
 
48
 
49
 
50
 
51
 
52
 
53
 
54
 
55
 
56
 
57
 
58
 
59
 
60
 
61
 
62
 
63
 
64
 
65
 
66
 
67
 
68
 
69
 
70
 
71
 
72
 
73
 
74
 
75
 
76
 
77
 
78
 
79
 
80
 
81
 
82
 
83
 
84
 
85
 
86
 
87
 
88
 
89
 
90
 
91
 
92
 
93
 
94
 
95
 
96
 
97
 
98
 
99
 
100
 
101
 
102
 
103
 
104
 
105
 
106
 
107
 
108
 
109
 
110
 
111
 
112
 
113
 
114
 
115
 
116
 
117
 
118
 
119
 
120
 
121
 
122
 
123
 
124
 
125
 
126
 
127
 
128
 
129
 
130
 
131
 
132
 
133
 
134
 
135
 
136
 
137
 
138
 
139
 
140
 
141
 
142
 
143
 
144
 
145
 
146
 
147
 
148
 
149
 
150
 
151
 
152
 
153
 
154
 
155
 
156
 
157
 
158
 
159
 
160
 
161
 
162
 
163
 
164
 
165
 
166
 
167
 
168
 
169
 
170
 
171
 
172
 
173
 
174
 
175
 
176
 
177
 
178
 
179
 
180
 
181
 
182
 
183
 
184
 
185
 
186
 
187
 
188
 
189
 
190
 
191
 
192
 
193
 
194
 
195
 
196
 
197
 
198
 
199
 
200
 
201
 
202
 
203
 
204
 
205
 
206
 
207
 
208
 
209
 
210
 
211
 
212
 
213
 
214
 
215
 
216
 
217
 
218
 
219
 
220
 
221
 
222
 
223
 
224
 
225
 
226
 
227
 
228
 
229
 
230
 
231
 
232
 
233
 
234
 
235
 
236
 
237
 
238
 
239
 
240
 
241
 
242
 
243
 
244
 
245
 
246
 
247
 
248
 
249
 
250
 
251
 
252
 | 
@WebService
public
class
UserHelper 
implements
IUserHelper {
    
private
IUserDao userDao = 
null
;
    
private
IDepartmentDao departDao = 
null
;
    
private
IFunctionHelper functionHelper = 
null
;
    
private
IRoleHelper roleHelper = 
null
;
    
public
void
setUserDao(IUserDao userDao) {
        
this
.userDao = userDao;
    
}
    
public
void
setFunctionHelper(IFunctionHelper functionHelper) {
        
this
.functionHelper = functionHelper;
    
}
    
public
void
setDepartDao(IDepartmentDao departDao) {
        
this
.departDao = departDao;
    
}
    
public
void
setRoleHelper(IRoleHelper roleHelper) {
        
this
.roleHelper = roleHelper;
    
}
    
/**
     
* 通过id查询权限,没有则返回null
     
* 
     
* @param id
     
* @return
     
*/
    
public
UserVO queryUserById(Long id) 
throws
GeneralException {
        
User user = 
null
;
        
try
{
            
user = userDao.queryUserById(id);
        
} 
catch
(Exception e) {
            
e.printStackTrace();
            
throw
new
GeneralException(
"error.userDeatil"
, 
"通过id查询权限时出错!"
);
        
}
        
// PO 转 VO
        
UserVO userVO = userPoToVo(user);
        
return
userVO;
    
}
    
/**
     
* 得到所有权限的集合,没有则返回 null
     
* 
     
* @return
     
*/
    
public
List<UserVO> queryAllUser() 
throws
GeneralException {
        
List<UserVO> allFuncVOs = 
new
ArrayList<UserVO>();
        
List<User> allFuncs = 
null
;
        
try
{
            
allFuncs = userDao.queryAllUser();
        
} 
catch
(Exception e) {
            
throw
new
GeneralException(
"error.userList"
, 
"得到所有权限的集合时出错!"
);
        
}
        
for
(Iterator<?> iterator = allFuncs.iterator(); iterator.hasNext();) {
            
User user = (User) iterator.next();
            
// PO 转 VO
            
UserVO userVO = userPoToVo(user);
            
allFuncVOs.add(userVO);
        
}
        
return
allFuncVOs;
    
}
    
/**
     
* 权限的PO 到 VO 转换的方法
     
* 
     
* @param user
     
* @return
     
*/
    
public
UserVO userPoToVo(User user) 
throws
GeneralException {
        
UserVO userVO = 
new
UserVO();
        
BeanUtil.copyProperties(userVO, user);
        
try
{
            
userVO.setDepartName(departDao.queryNameById(user.getDepartid())); 
// 设置部门名称
        
} 
catch
(Exception e) {
            
throw
new
GeneralException(
"error.user"
, 
" 权限的PO 到 VO 转换时出错!"
);
        
}
        
if
(userVO.getStatus().equals(
"1"
)){
            
userVO.setStatus(
"可用"
);
        
}
else
{
            
userVO.setStatus(
"不可用"
);
        
}
        
userVO.setRegisterName(
"ZHANG"
);
        
userVO.setChangerName(
"ZHANG"
);
        
return
userVO;
    
}
    
/**
     
* 通过分页查询权限信息集合
     
* 
     
* @param hql
     
* @param currentPage
     
* @param pageSize
     
* @return
     
* @throws GeneralException
     
*/
    
public
List<UserVO> queryUserByPage(String hql, 
int
currentPage,
            
int
pageSize) 
throws
GeneralException {
        
List<UserVO> allFuncVOs = 
new
ArrayList<UserVO>();
        
List<User> allFuncs = 
null
;
        
try
{
            
allFuncs = userDao.queryAllUser(hql, currentPage, pageSize);
        
} 
catch
(Exception e) {
            
throw
new
GeneralException(
"error.userList"
, 
"分页得到权限的集合时出错!"
);
        
}
        
for
(Iterator<?> iterator = allFuncs.iterator(); iterator.hasNext();) {
            
User user = (User) iterator.next();
            
// PO 转 VO
            
UserVO userVO = userPoToVo(user);
            
allFuncVOs.add(userVO);
        
}
        
return
allFuncVOs;
    
}
    
/**
     
* 返回User分页对象
     
* 
     
* @param currentPage
     
* @return
     
*/
    
public
Pagination getPagination(
int
currentPage, String hql) {
        
return
new
Pagination(currentPage,
                
DisplayRecordCount.DISPLAY_IN_USER_LIST, userDao
                        
.queryAllUserNubmer(hql));
    
}
    
/**
     
* 查到用户的所有角色ID
     
* 
     
* @param userId
     
* @return
     
* @throws GeneralException
     
*/
    
public
List<Long> queryAllRoleidsOfUser(Long userId)
            
throws
GeneralException {
        
List<Long> rolesOfUser = 
new
ArrayList<Long>();
        
List<UserRole> userRoles = 
null
;
        
try
{
            
userRoles = userDao.queryRoleOnlyByUserId(userId); 
// 查到角色权限
        
} 
catch
(Exception e) {
            
throw
new
GeneralException(
"error.userRoleidsList"
,
                    
"得到用户的角色ID集合出错!"
);
        
}
        
for
(Iterator<?> iterator = userRoles.iterator(); iterator.hasNext();) {
            
UserRole userRole = (UserRole) iterator.next();
            
Long roleid = userRole.getRoleid();
            
rolesOfUser.add(roleid);
        
}
        
return
rolesOfUser;
    
}
    
/**
     
* 查到用户的所有角色
     
* 
     
* @param userId
     
* @return
     
* @throws GeneralException
     
*/
    
public
List<RoleVO> queryAllRoleOfUser(Long userId) 
throws
GeneralException {
        
List<Long> rolesOfUser = 
new
ArrayList<Long>();
        
List<RoleVO> userRoles = 
new
ArrayList<RoleVO>();
        
try
{
            
rolesOfUser = queryAllRoleidsOfUser(userId);
            
for
(Iterator<?> iterator = rolesOfUser.iterator(); iterator
                    
.hasNext();) {
                
Long roleid = (Long) iterator.next();
                
RoleVO roleVO = roleHelper.queryRoleById(roleid);
                
userRoles.add(roleVO);
            
}
        
} 
catch
(Exception e) {
            
e.printStackTrace();
            
throw
new
GeneralException(
"error.userRoleList"
,
                    
"得到用户的角色集合出错!"
);
        
}
        
return
userRoles;
    
}
    
/**
     
* 查询用户的所有权限 1.查询所有用户的权限 2.查询所有用户的角色 3.查询所有用户的权限+角色的权限-共同的权限
     
* 
     
* @param userId
     
* @return
     
*/
    
public
List<FunctionVO> queryAllFunctionOfUser(Long userId,String system)
            
throws
GeneralException {
        
Set<FunctionVO> userAllFuncs = 
new
HashSet<FunctionVO>();
        
List<FunctionVO> userAllFuncsList = 
new
ArrayList<FunctionVO>();
        
try
{
            
List<UserAuth> userFuncs = userDao
                    
.queryFunctionOnlyByUserId(userId); 
// 查到权限
            
if
(userFuncs != 
null
) {
                
for
(Iterator<?> iterator = userFuncs.iterator(); iterator
                        
.hasNext();) {
                    
UserAuth userFunc = (UserAuth) iterator.next();
                    
Long funcId = userFunc.getFuncid();
                    
FunctionVO funcVO = functionHelper
                            
.queryFunctionById(funcId);
                    
userAllFuncs.add(funcVO);
                
}
            
}
            
List<UserRole> userRoles = userDao.queryRoleOnlyByUserId(userId); 
// 查到角色
            
if
(userRoles != 
null
) {
                
// 查到所有角色的所有权限,将权限放入到userAllFuncs中
                
for
(Iterator<?> iterator = userRoles.iterator(); iterator
                        
.hasNext();) {
                    
UserRole userRole = (UserRole) iterator.next();
                    
Long roleId = userRole.getRoleid();
                    
List<FunctionVO> funcVOs = roleHelper
                            
.queryFunctionOfRole(roleId);
                    
for
(Iterator<?> iterator2 = funcVOs.iterator(); iterator2
                            
.hasNext();) {
                        
FunctionVO functionVO = (FunctionVO) iterator2.next();
                        
userAllFuncs.add(functionVO);
                    
}
                
}
            
}
            
// 将筛选了数据的无序Set集合转换为有序的List集合.一定要从小到大,否则权限树显示就会有问题
            
for
(Iterator<?> iterator = userAllFuncs.iterator(); iterator
                    
.hasNext();) {
                
                
FunctionVO userAllFun = (FunctionVO) iterator.next();
                
if
(system.equals(
"crm"
)){
                    
if
(userAllFun.getFuncid()>=20000000l){
                        
userAllFuncsList.add(userAllFun);
                    
}
                
}
else
if
(system.equals(
"hr"
)){
                    
if
(userAllFun.getFuncid()<20000000l){
                        
userAllFuncsList.add(userAllFun);
                    
}
                
}
            
}
            
FunctionComparator fc = 
new
FunctionComparator();
            
Collections.sort(userAllFuncsList, fc);
        
} 
catch
(Exception e) {
            
e.printStackTrace();
            
throw
new
GeneralException(
"error.userAllFuncsList"
, 
"得到用户的权限集合出错!"
);
        
}
        
return
userAllFuncsList;
    
}
}
 | 
http://shenzhen.offcn.com/
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。