mybatis多表连接在控制台输入用户名密码,登录 成功后,打印当前登陆成功的用户的信息,和详细信息,以及角色列表
时间: 2024-10-20 22:13:21 浏览: 21
Spring Boot+Mybatis Plus+Thymeleaf实现用户登录和校验用户名是否重复功能
在MyBatis中,如果你想要实现这样的功能,首先你需要有一个数据库表结构,包含用户、角色等信息,并且用户和角色之间通常通过外键关联。以下是步骤的概述:
1. **配置Mapper接口**:
创建一个`UserLoginMapper.xml`文件,其中会有一个查询方法,用于根据用户名和密码获取用户及其角色信息:
```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.mapper.UserLoginMapper">
<select id="login" parameterType="map" resultType="UserWithRoles">
SELECT u.*, r.*
FROM users u
LEFT JOIN roles r ON u.role_id = r.id
WHERE u.username = #{username} AND password = #{password}
</select>
</mapper>
```
这里假设`UserWithRoles`是一个包含用户基本信息和角色信息的自定义结果对象。
2. **编写服务层**:
`UserService.java`中会注入Mapper并实现登录逻辑:
```java
import com.example.entity.User;
import com.example.entity.Role;
import com.example.mapper.UserLoginMapper;
public class UserService {
private final UserLoginMapper userLoginMapper;
public UserService(UserLoginMapper userLoginMapper) {
this.userLoginMapper = userLoginMapper;
}
public boolean login(String username, String password) {
UserWithRoles user = userLoginMapper.login(username, password);
if (user != null) {
// 登录成功
System.out.println("用户信息: " + user.getUserInfo());
System.out.println("详细信息: " + user.getDetailedInfo());
System.out.println("角色列表: " + user.getRoleList());
return true;
} else {
return false;
}
}
}
```
3. **控制器或Service入口**:
用户尝试登录的地方,例如Controller或Service的某个地方:
```java
@Autowired
private UserService userService;
public void handleLoginRequest(LoginRequest request) {
if (userService.login(request.getUsername(), request.getPassword())) {
// 登录处理后续操作...
} else {
// 登录失败处理...
}
}
```
4. **数据验证**:
在实际应用中,需要对输入的用户名和密码进行有效性验证,防止SQL注入等问题。
阅读全文