spring boot 实现根据用户名查找用户功能

19 篇文章 0 订阅
15 篇文章 0 订阅

目录

1、UserEnetity类

2、UserMapper类

3、UserService类

4、UserController类

5、postman测试结果


 

为了实现根据用户名查询用户功能,我们需要在spring boot框架当中编写一下几个类:

1、UserEnetity类

它是根据数据库表的实体类,用于封装用户的基本信息。在这个表当中,需要定义与用户相关的属性,并提供getter和setter方法。

public class UserEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private String name;


    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    private String username;


    private int role;
    private String avatar;
    private int status;
    private String password;


    public UserEntity(int id, String name, int role, String avatar, int status, String password,String username,String token) {
        this.id = id;
        this.name = name;
        this.role = role;
        this.avatar = avatar;
        this.status = status;
        this.password = password;
        this.username = username;
    }

    public UserEntity() {

    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    public int getRole() {
        return role;
    }

    public void setRole(int role) {
        this.role = role;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2、UserMapper类

它是基于MyBatis的接口,用于定义数据库操作的方法,例如查询用户、添加用户、更新用户等。

@Mapper
public interface UserMapper extends BaseMapper {
    List<UserEntity> findAllUser();

    UserDTO getUserByUsername(String subject);
}

3、UserService类

它是业务逻辑层,主要负责协调UserMapper类和User Entity类之间的关系,实现业务逻辑的处理。在这个类中,需要定义根据用户名查询用户的方法,并调用UserMapper类的方法实现查询操作。

   //用户名查询用户
    public ResultResponse findByUsername(String name) {
        QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name", name);
        UserEntity user = (UserEntity) userMapper.selectOne(queryWrapper);
        if (user != null) {
            return ResultResponse.returnToken(ResultResponse.success("查询成功", user));
        } else {
            return ResultResponse.returnToken(ResultResponse.fail("查询失败,该用户不存在"));
        }
    }

4、UserController类

它是控制器层,用于处理用户请求,返回相应的结果。在这个类中,需要定义请求处理方法,例如根据用户名查询用户的方法,以及返回JSON格式的数据。

   //根据用户名查询用户--查询结果分每页十条显示
    @GetMapping("user/findByUsername")
    public ResultResponse<IPage<UserEntity>> findByUsername(@RequestParam String username,
                                                            @RequestParam Integer pageNumber,
                                                            @RequestParam Integer pageSize) {
        Page<UserEntity> userPage = new Page<>(pageNumber, pageSize);
//        IPage<UserEntity> user = (IPage<UserEntity>) userService.selectByUsername(userPage, username);
        UserEntity user = userService.selectByUsername(userPage,username);

        if (user == null) {
            return ResultResponse.error("没有找到匹配的用户");
        }
        return ResultResponse.ok("查询成功",user);
    }

总之,这四个类都是需要编写的,而且它们之间的关系也需要设计好。其中,User Entity类和UserMapper类与数据库之间的关系比较紧密,UserService类则是作为业务逻辑层的核心,而UserController类则是作为控制器层的核心,负责处理用户请求和返回响应结果。

5、postman测试结果

 完成!!!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些指导。 首先,您需要创建一个Spring Boot项目并添加所需的依赖项。您需要添加Spring Boot Starter Web和Spring Boot Starter Data JPA依赖项。在pom.xml文件中添加以下依赖项: ``` <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies> ``` 这些依赖项将为您提供Spring Boot Web和Spring Boot Data JPA的支持。还添加了H2数据库支持,以便您可以在本地运行应用程序。 接下来,您需要创建一个用户实体。用户实体将用于存储用户的详细信息,例如用户名,密码等。以下是一个简单的用户实体类: ``` @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(nullable = false, unique = true) private String username; @Column(nullable = false) private String password; // Getters and setters } ``` 在这个实体中,我们使用了@Entity和@Table注释来指定实体名称和表名称。我们还为每个属性指定了@Column注释,以便JPA可以将它们映射到表的列。 接下来,您需要创建一个用户存储库。用户存储库将用于处理与用户相关的操作,例如创建用户查找用户等。以下是一个简单的用户存储库: ``` @Repository public interface UserRepository extends JpaRepository<User, Long> { Optional<User> findByUsername(String username); } ``` 在这个存储库中,我们使用了@Repository注释来指定它是一个Spring Bean。我们还扩展了JpaRepository来获得标准的CRUD操作。我们还添加了一个findByUsername方法,以便我们可以根据用户名查找用户。 接下来,您需要创建一个用户服务。用户服务将处理与用户相关的业务逻辑,例如验证用户,创建用户等。以下是一个简单的用户服务: ``` @Service public class UserService { private final UserRepository userRepository; public UserService(UserRepository userRepository) { this.userRepository = userRepository; } public User createUser(String username, String password) throws UserAlreadyExistsException { Optional<User> existingUser = userRepository.findByUsername(username); if (existingUser.isPresent()) { throw new UserAlreadyExistsException(); } User user = new User(); user.setUsername(username); user.setPassword(passwordEncoder().encode(password)); return userRepository.save(user); } public User authenticateUser(String username, String password) throws UserNotFoundException, InvalidPasswordException { Optional<User> optionalUser = userRepository.findByUsername(username); User user = optionalUser.orElseThrow(UserNotFoundException::new); if (!passwordEncoder().matches(password, user.getPassword())) { throw new InvalidPasswordException(); } return user; } private PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } } ``` 在这个服务中,我们使用了@Service注释来指定它是一个Spring Bean。我们还注入了一个UserRepository,以便我们可以使用它来处理与用户相关的操作。 我们添加了两个方法:createUser和authenticateUser。createUser方法将创建一个新用户,并将其保存到数据库中。authenticateUser方法将验证用户的凭据,并返回用户对象。 在上面的代码中,您可能已经注意到我们使用了一个PasswordEncoder来处理密码。这是一个用于密码加密和解密的Spring Security组件。在这个示例中,我们使用了BCryptPasswordEncoder。 最后,您需要创建一个控制器来处理HTTP请求。以下是一个简单的控制器: ``` @RestController @RequestMapping("/users") public class UserController { private final UserService userService; public UserController(UserService userService) { this.userService = userService; } @PostMapping("/register") public User registerUser(@RequestBody UserDTO userDTO) throws UserAlreadyExistsException { return userService.createUser(userDTO.getUsername(), userDTO.getPassword()); } @PostMapping("/login") public User loginUser(@RequestBody UserDTO userDTO) throws UserNotFoundException, InvalidPasswordException { return userService.authenticateUser(userDTO.getUsername(), userDTO.getPassword()); } @ExceptionHandler({UserAlreadyExistsException.class, UserNotFoundException.class, InvalidPasswordException.class}) public ResponseEntity<String> handleException(Exception e) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(e.getMessage()); } } ``` 在这个控制器中,我们使用了@RestController和@RequestMapping注释来指定它是一个Spring MVC控制器。我们还注入了UserService,以便我们可以使用它来处理与用户相关的业务逻辑。 我们添加了两个端点:registerUser和loginUser。registerUser将创建一个新用户,并返回用户对象。loginUser将验证用户的凭据,并返回用户对象。 我们还添加了一个ExceptionHandler方法,以便我们可以捕获和处理异常。在这个示例中,我们返回了一个HTTP 401 Unauthorized响应。 这就是您需要实现的所有内容。您可以使用POSTMAN或其他HTTP客户端来测试这些端点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丘比特惩罚陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值