运用spring boot框架用@Controller @ResponseBody@Autowired@PostMapping@Service@Mapper@Data注解和xml<select>语句用resultType实现用户登录案例
时间: 2024-02-13 08:53:08 浏览: 85
好的,我来为你演示一下如何运用 Spring Boot 框架实现用户登录案例。
首先,在 pom.xml 文件中添加以下依赖:
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
```
其中,`spring-boot-starter-web` 用于支持 Web 应用程序的开发,`mybatis-spring-boot-starter` 用于支持 MyBatis 框架的使用,`mysql-connector-java` 用于连接 MySQL 数据库。
接下来,在 application.properties 文件中添加数据库连接配置:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml
```
其中,`spring.datasource.url` 指定数据库的 URL,`spring.datasource.username` 和 `spring.datasource.password` 分别指定数据库的用户名和密码,`mybatis.mapper-locations` 指定 MyBatis 的 Mapper 文件所在的路径。
接着,创建一个 User 实体类,使用 `@Data` 注解自动生成 Getter 和 Setter 方法:
```java
@Data
public class User {
private Integer id;
private String username;
private String password;
}
```
然后,创建一个 `UserMapper` 接口,用于定义数据库操作方法:
```java
@Mapper
public interface UserMapper {
User selectByUsername(String username);
}
```
在这里,我们使用了 `@Mapper` 注解来标记这是一个 MyBatis 的 Mapper 接口,并定义了一个 `selectByUsername` 方法,用于根据用户名查询用户信息。
接下来,创建一个 `UserMapper.xml` 文件,用于定义 SQL 语句:
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="selectByUsername" resultType="com.example.demo.entity.User">
SELECT * FROM user WHERE username = #{username}
</select>
</mapper>
```
在这里,我们定义了一个 `selectByUsername` 查询语句,返回值类型为 `com.example.demo.entity.User`。
接着,创建一个 `UserService` 接口,用于定义用户登录方法:
```java
public interface UserService {
User login(String username, String password);
}
```
然后,创建一个 `UserServiceImpl` 类,实现 `UserService` 接口:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User login(String username, String password) {
User user = userMapper.selectByUsername(username);
if (user != null && user.getPassword().equals(password)) {
return user;
}
return null;
}
}
```
在这里,我们使用了 `@Service` 注解来标记这是一个服务类,使用 `@Autowired` 注解来自动注入 `UserMapper` 对象,并实现了 `login` 方法,用于验证用户登录信息是否正确。
最后,创建一个 `LoginController` 类,用于处理登录请求:
```java
@Controller
public class LoginController {
@Autowired
private UserService userService;
@PostMapping("/login")
@ResponseBody
public String login(String username, String password) {
User user = userService.login(username, password);
if (user != null) {
return "登录成功";
} else {
return "用户名或密码错误";
}
}
}
```
在这里,我们使用了 `@Controller` 注解来标记这是一个控制器类,使用 `@Autowired` 注解来自动注入 `UserService` 对象,并定义了一个 `login` 方法,用于处理登录请求。通过 `@PostMapping` 注解来指定该方法只接受 POST 请求,并使用 `@ResponseBody` 注解将返回值转换为 JSON 格式。
现在,我们已经完成了用户登录案例的实现,可以通过访问 `http://localhost:8080/login` 来进行登录操作。
阅读全文