下面我就详细讲解一下“SpringBoot+MyBatis实现登录案例”的完整攻略。
准备工作
首先,我们需要准备好以下工具和环境:
- Java开发环境(推荐使用Java 8或以上版本)
- Maven项目管理工具
- IDEA或Eclipse集成开发环境
- MySQL数据库
创建Maven工程
使用IDEA或Eclipse创建一个Maven工程,项目结构如下:
project
|--src
| |--main
| | |--java
| | | |--com.example
| | | | |--Application.java
| | |--resources
| | | |--application.properties
| | | |--mapper
| | | | |--UserMapper.xml
|--pom.xml
其中,Application.java
是Spring Boot应用程序入口,application.properties
是Spring Boot应用程序配置文件,UserMapper.xml
是MyBatis的Mapper。
配置文件
在application.properties
文件中,我们需要配置以下内容:
server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
mybatis.mapper-locations=classpath:mapper/*.xml
其中,server.port
是应用程序的端口号,spring.datasource
是数据库的配置信息,mybatis.mapper-locations
是Mapper的存放路径。
数据库表结构
我们创建一个名为user
的表,用于记录用户信息。表结构如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` varchar(32) NOT NULL COMMENT '用户名',
`password` varchar(32) NOT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
实体类及Mapper
我们创建一个名为User
的实体类,用于表示用户信息。代码如下:
public class User {
private Integer id;//主键ID
private String username;//用户名
private String password;//密码
//省略getters和setters
}
接着,我们创建一个名为UserMapper
的Mapper,用于操作数据库表user
。代码如下:
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE username = #{username} AND password = #{password}")
User findUser(@Param("username") String username, @Param("password") String password);
}
服务层和控制层
接着,我们创建一个名为UserService
的服务类,用于处理业务逻辑。代码如下:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findUser(String username, String password) {
return userMapper.findUser(username, password);
}
}
再创建一个名为UserController
的控制器类,用于实现用户的登录功能。代码如下:
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public String login(String username, String password) {
User user = userService.findUser(username, password);
if (user == null) {
return "登录失败";
} else {
return "登录成功";
}
}
}
这里我们使用了@RestController
注解,表示该类是一个控制器类,同时返回值是字符串类型。
测试
现在,我们可以进行测试了。启动Spring Boot应用程序,访问"http://localhost:8080/login"时,会跳转到登录界面。
首先,我们需要在数据库中插入一个用户,如下所示:
INSERT INTO `user` (`id`, `username`, `password`) VALUES (1, 'admin', 'admin');
然后,使用Postman或其他工具发送一个POST请求,请求体中携带用户名和密码。例如,用户名为admin
,密码为admin
,请求如下:
POST http://localhost:8080/login
Content-Type: application/x-www-form-urlencoded
username=admin&password=admin
如果用户名和密码匹配,则控制台输出"登录成功",否则输出"登录失败"。
示例1:注册功能
在该工程中,我们增加一个名为RegisterController
的控制器类,用于实现用户的注册功能。代码如下:
@RestController
public class RegisterController {
@Autowired
private UserService userService;
@PostMapping("/register")
public String register(String username, String password) {
User user = new User();
user.setUsername(username);
user.setPassword(password);
int rows = userService.insertUser(user);
if (rows > 0) {
return "注册成功";
} else {
return "注册失败";
}
}
}
这里我们新增了一个insertUser
方法,用于向数据库中插入用户信息。
在UserService
类中,增加该方法的实现:
public int insertUser(User user) {
return userMapper.insertUser(user);
}
接着,在UserMapper
接口中,增加该方法的声明:
@Insert("INSERT INTO user (username, password) VALUES (#{username}, #{password})")
int insertUser(User user);
现在,我们可以向"http://localhost:8080/register"发送一个POST请求,请求体中包含用户名和密码,例如:
POST http://localhost:8080/register
Content-Type: application/x-www-form-urlencoded
username=test&password=test
如果注册成功,则控制台输出"注册成功",否则输出"注册失败"。
示例2:查询所有用户
在该工程中,我们新增一个名为UserController
的控制器类,用于查询所有用户。代码如下:
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user")
public List<User> getUser() {
return userService.getUser();
}
}
在UserService
类中,增加getUser
方法的实现:
public List<User> getUser() {
return userMapper.getUser();
}
在UserMapper
接口中,增加该方法的声明:
@Select("SELECT * FROM user")
List<User> getUser();
现在,我们可以向"http://localhost:8080/user"发送一个GET请求,即可获取所有用户信息。如果有多个用户,则返回一个包含所有用户信息的列表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot+MyBatis实现登录案例 - Python技术站