MyBatis Plus 入门使用详细教程
MyBatis Plus 是一款优秀的持久层框架,它在 MyBatis 的基础上增加了许多实用性的功能,使得开发者可以更方便地进行 CRUD 操作和灵活构建 SQL。本文将详细介绍 MyBatis Plus 的基本使用方法。
安装
添加 Maven 依赖
在 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.x.x</version>
</dependency>
其中 3.x.x
对应的是 MyBatis Plus 的版本号,可以通过其它方式获取最新版本。
配置 MyBatis Plus
在 MyBatis 的配置文件中,增加 MyBatis Plus 的插件和拦截器:
<plugins>
<!-- 分页插件 -->
<plugin interceptor="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
<!-- 乐观锁插件 -->
<plugin interceptor="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor"/>
</plugins>
使用
实体类
在 Java 代码中,新建一个实体类,用于对应数据库中的表。同时,在实体类中使用 MyBatis Plus 的注解来映射数据库中的字段和对应的数据类型:
@TableName("user")
public class User {
@TableId(type = IdType.ID_WORKER)
private Long id;
@TableField("username")
private String username;
@TableField("password")
private String password;
@TableField("age")
private Integer age;
// 省略 getter 和 setter
}
其中,@TableName
注解表示该实体类对应的数据库表名,@TableId
注解表示该属性对应的数据库表主键,@TableField
注解表示该属性对应的数据库表字段名称。
Mapper 接口
在 Java 代码中,编写一个 Mapper 接口,用于对应数据库中的一张表。同时继承 MyBatis Plus 的 BaseMapper
接口,该接口提供了许多常用的数据库操作方法:
public interface UserMapper extends BaseMapper<User> {
}
Service 层
在编写 Service 层时,注入 Mapper 接口,并在 Service 的方法中调用 Mapper 提供的操作数据库的方法即可。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getUsers() {
return userMapper.selectList(null); // 查询全部
}
@Override
public User getUserById(Long userId) {
return userMapper.selectById(userId); // 根据主键查询
}
}
控制器
在编写控制器时,注入 Service 接口,并在控制器的方法中调用 Service 提供的业务逻辑方法:
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<User> getUsers() {
return userService.getUsers();
}
@GetMapping("/users/{id}")
public User getUserById(@PathVariable("id") Long userId) {
return userService.getUserById(userId);
}
}
示例
分页查询
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getUsersByPage(int pageNum, int pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
return userMapper.selectPage(page, null).getRecords();
}
}
上述代码中,Page
是 MyBatis Plus 提供的用于表示分页信息的实体类,selectPage
方法表示执行分页查询操作。我们可以根据实际情况查询出数据总数、分页条数、当前页码等信息。
乐观锁机制
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public boolean updateUser(Long userId, String newUsername, String newPassword, Integer newAge, Integer currentVersion) {
User user = new User();
user.setId(userId);
user.setUsername(newUsername);
user.setPassword(newPassword);
user.setAge(newAge);
user.setVersion(currentVersion);
int affectedRows = userMapper.updateById(user);
return affectedRows == 1;
}
}
上述代码中,使用了 MyBatis Plus 提供的乐观锁插件实现了乐观锁机制。updateById
方法默认会检查数据库中当前这条记录的版本号是否和传入的版本号一致,如果一致,则更新这条记录并将版本号加 1,如果不一致,则抛出 OptimisticLockException
异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis Plus 入门使用详细教程 - Python技术站