mysql8.0 mybatis-plus 什么版本
时间: 2023-12-25 16:04:42 浏览: 33
MySQL 8.0 和 MyBatis-Plus 的版本兼容情况如下:
- MyBatis-Plus 3.4.x:支持 MySQL 8.x。
- MyBatis-Plus 3.3.x:支持 MySQL 8.0.x,但不支持 MySQL 8.0.11 以上版本,因为 8.0.11 以上版本默认采用 caching_sha2_password 加密方式,需要特殊配置才能使用。
建议使用最新版本的 MyBatis-Plus,以获得更好的兼容性和性能。
相关问题
springboot mybatis-plus jwt 登录接口
下面是一个使用 Spring Boot、Mybatis-Plus 和 JWT 实现登录接口的示例:
首先,你需要添加以下依赖项到你的 `pom.xml` 文件中:
```xml
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Mybatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!-- JWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
</dependencies>
```
接着,你需要创建一个用户模型类 `User`,它应该包含用户名和密码等信息:
```java
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
```
然后,你需要创建一个用户数据访问接口 `UserMapper`,它应该继承 `BaseMapper` 接口,并使用 Mybatis-Plus 提供的注解来完成 CRUD 操作:
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
// 根据用户名查询用户
User selectByUsername(String username);
}
```
接着,你需要创建一个 JWT 工具类 `JwtUtils`,它应该包含生成 JWT、解析 JWT 等操作:
```java
public class JwtUtils {
// 密钥
private static final String SECRET = "your-secret-key";
// 过期时间
private static final long EXPIRATION_TIME = 86400000;
// 生成 JWT
public static String generateToken(String username) {
Date now = new Date();
Date expiration = new Date(now.getTime() + EXPIRATION_TIME);
return Jwts.builder()
.setSubject(username)
.setIssuedAt(now)
.setExpiration(expiration)
.signWith(SignatureAlgorithm.HS256, SECRET)
.compact();
}
// 解析 JWT
public static String getUsernameFromToken(String token) {
return Jwts.parser()
.setSigningKey(SECRET)
.parseClaimsJws(token)
.getBody()
.getSubject();
}
}
```
接着,你需要创建一个登录控制器 `AuthController`,它应该包含登录接口和刷新 JWT 接口:
```java
@RestController
public class AuthController {
@Autowired
private UserMapper userMapper;
// 登录接口
@PostMapping("/login")
public String login(@RequestBody User user) {
// 查询用户
User dbUser = userMapper.selectByUsername(user.getUsername());
if (dbUser == null || !dbUser.getPassword().equals(user.getPassword()))
java代码实现mybatis-plus连表分页查询
假设我们有两个实体类`User`和`Order`,它们之间是一对多的关系,即一个用户可以有多个订单。我们需要实现一个连表分页查询的功能,可以按照用户的某个字段进行排序。
1. 首先在`pom.xml`文件中添加Mybatis-Plus和MySql的依赖:
```xml
<!-- Mybatis-Plus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<!-- MySql驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
```
2. 创建两个实体类`User`和`Order`,并在`User`类中添加`@TableId`注解:
```java
@Data
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
@Data
public class Order {
private Long id;
private Long userId;
private String orderNo;
private BigDecimal amount;
}
```
3. 创建`UserMapper`和`OrderMapper`接口,并继承`BaseMapper`接口:
```java
public interface UserMapper extends BaseMapper<User> {
}
public interface OrderMapper extends BaseMapper<Order> {
}
```
4. 创建`UserAndOrderVO`类,用于封装查询结果:
```java
@Data
public class UserAndOrderVO {
private Long userId;
private String userName;
private Integer userAge;
private String userEmail;
private Long orderId;
private String orderNo;
private BigDecimal orderAmount;
}
```
5. 创建`UserAndOrderMapper`接口,用于实现连表分页查询:
```java
public interface UserAndOrderMapper extends BaseMapper<UserAndOrderVO> {
List<UserAndOrderVO> selectUserAndOrderPage(IPage<UserAndOrderVO> page, @Param("orderByField") String orderByField, @Param("userId") Long userId);
}
```
6. 在`UserAndOrderMapper.xml`中实现具体的查询逻辑:
```xml
<select id="selectUserAndOrderPage" resultMap="UserAndOrderVO">
SELECT u.id AS userId, u.name AS userName, u.age AS userAge, u.email AS userEmail, o.id AS orderId, o.order_no AS orderNo, o.amount AS orderAmount
FROM user u
INNER JOIN `order` o ON u.id = o.user_id
<if test="userId != null">
WHERE u.id = #{userId}
</if>
ORDER BY ${orderByField} DESC
</select>
```
7. 在业务逻辑中调用`UserAndOrderMapper`接口中的方法,实现分页查询:
```java
@Service
public class UserAndOrderService {
@Autowired
private UserAndOrderMapper userAndOrderMapper;
public IPage<UserAndOrderVO> selectUserAndOrderPage(Page<UserAndOrderVO> page, String orderByField, Long userId) {
return userAndOrderMapper.selectUserAndOrderPage(page, orderByField, userId);
}
}
```
以上就是使用Mybatis-Plus实现连表分页查询的全部代码。