1 用戶詳情查詢
1.1 頁面
1.2 DAO
- IPermissionDao
public interface IPermissionDao {
@Select("select * from permission where id in" +
"(select permissionId from role_permission where roleId=#{id} )")
public List<Permission> findPermissionByRoleId(String id) throws Exception;
}
- IRoleDao
public interface IRoleDao {
@Select("select * from role where id in (select roleId from users_role where userId = #{userId})")
@Results({
@Result(id = true, property = "id", column = "id"),
@Result(property = "roleName", column = "roleName"),
@Result(property = "roleDesc", column = "roleDesc"),
@Result(property = "permissions" ,column = "id",javaType = java.util.List.class,
many = @Many(select = "com.tzb.dao.IPermissionDao.findPermissionByRoleId")),
})
public List<Role> findRoleByUserId(String userId) throws Exception;
}
- IUserDao
public interface IUserDao {
@Select("select * from users where username=#{username}")
@Results({
@Result(id = true, property = "id", column = "id"),
@Result(property = "username", column = "username"),
@Result(property = "email", column = "email"),
@Result(property = "password", column = "password"),
@Result(property = "phoneNum", column = "phoneNum"),
@Result(property = "status", column = "status"),
@Result(property = "roles", column = "id", javaType = java.util.List.class,
many = @Many(select = "com.tzb.dao.IRoleDao.findRoleByUserId"))
})
public UserInfo findByUserName(String username) throws Exception;
@Select("select * from users")
List<UserInfo> findAll() throws Exception;
@Insert("insert into users(email,username,password,phoneNum,status) values (#{email}," +
"#{username},#{password},#{phoneNum},#{status})")
void save(UserInfo userInfo) throws Exception;
@Select("select * from users where id=#{id}")
@Results({
@Result(id = true, property = "id", column = "id"),
@Result(property = "username", column = "username"),
@Result(property = "email", column = "email"),
@Result(property = "password", column = "password"),
@Result(property = "phoneNum", column = "phoneNum"),
@Result(property = "status", column = "status"),
@Result(property = "roles", column = "id", javaType = java.util.List.class,
many = @Many(select = "com.tzb.dao.IRoleDao.findRoleByUserId"))
})
UserInfo findById(String id);
}
1.3 Service
- 接口
public interface IUserService extends UserDetailsService {
List<UserInfo> findAll() throws Exception;
void save(UserInfo userInfo) throws Exception;
UserInfo findById(String id) throws Exception;
}
- 實現類
@Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Autowired
private BCryptPasswordEncoder encoder;
/**
* 登錄認證
*
* @param username
* @return
* @throws UsernameNotFoundException
*/
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserInfo userInfo = null;
try {
userInfo = userDao.findByUserName(username);
} catch (Exception e) {
e.printStackTrace();
}
// 自己的用戶對象封裝成 UserDetails的實現類User
// User user = new User(userInfo.getUsername(), "{noop}" + userInfo.getPassword(),
// getAuthority(userInfo.getRoles()));
User user = new User(userInfo.getUsername(), userInfo.getPassword(),
userInfo.getStatus() == 0 ? false : true,
true,
true,
true,
getAuthority(userInfo.getRoles()));
return user;
}
// 集合中裝入的是角色的描述
private List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {
List<SimpleGrantedAuthority> list = new ArrayList<>();
for (Role role : roles) {
list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
}
return list;
}
/**
* 查詢所有用戶
*
* @return
* @throws Exception
*/
@Override
public List<UserInfo> findAll() throws Exception {
return userDao.findAll();
}
/**
* 添加用戶
*
* @param userInfo
* @throws Exception
*/
@Override
public void save(UserInfo userInfo) throws Exception {
// 對密碼進行加密處理
userInfo.setPassword(encoder.encode(userInfo.getPassword()));
userDao.save(userInfo);
}
@Override
public UserInfo findById(String id) throws Exception {
return userDao.findById(id);
}
}
1.4 Controller
1.5 數據庫表之間的關係
- 用戶和角色
- 角色和權限
1.6 結果測試