Mybatis-Plus 搭建与使用入门(小结)
本文介绍了如何使用 Mybatis-Plus 搭建一个基本的 CRUD 应用,并对其进行增强功能的使用。整个过程包含以下步骤:
1. 环境准备
为了使用 Mybatis-Plus,我们需要在项目中添加相关的依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
其中,${mybatis-plus.version}
是一个变量,需要配置为实际的版本号。
2. 配置文件
在项目的配置文件 (application.yml
或 application.properties
) 中,需要进行以下配置:
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml # 设置 Mybatis Mapper 文件的路径
configuration:
map-underscore-to-camel-case: true # 开启驼峰命名规则转换(例如:user_name -> userName)
3. 实体类
定义实体类时需要注意以下几点:
- 实体类需要添加
@TableName
注解,指定数据库表名 - 实体类需要实现
Serializable
接口,以支持缓存等操作
示例代码:
@Data
@TableName("user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String name;
private Integer age;
}
4. Mapper接口
使用 Mybatis-Plus 时,Mapper 接口不需要我们手动编写,Mybatis-Plus 会自动生成多种常用的 Mapper 方法。例如,我们可以定义一个 UserMapper
接口:
public interface UserMapper extends BaseMapper<User> {
}
其中,BaseMapper
是 Mybatis-Plus 提供的基础 Mapper 接口,包含了大量的增删改查等方法。
5. Service 接口
Service 接口的定义其实很简单,就是继承 IService
接口,并指定泛型类型为对应的实体类即可:
public interface UserService extends IService<User> {
}
其中,IService
是 Mybatis-Plus 提供的基础 Service 接口,包含了大量的增删改查等方法。
6. Service 实现类
实现 Service 接口时需要注意以下几点:
- Service 实现类需要添加
@Service
注解,以交由 Spring 管理 - Service 实现类需要实现 Service 接口
- Service 实现类需要使用
@Autowired
注入 Mapper 对象
示例代码:
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
// 可以在这里添加方法,实现业务逻辑
}
7. Controller
Controller 不需要进行特别的处理,直接使用 SpringMVC 的方式定义即可:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getById(@PathVariable Long id) {
return userService.getById(id);
}
@PostMapping
public Boolean save(@RequestBody User user) {
return userService.save(user);
}
}
8. 增强功能
Mybatis-Plus 还提供了一些增强功能,例如分页、条件构造器等。分页功能实现代码示例:
Page<User> page = new Page<>(1, 10);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().gt(User::getAge, 18);
IPage<User> result = userService.page(page, queryWrapper);
9. 结语
至此,我们已经完成了 Mybatis-Plus 的搭建和使用入门教程。Mybatis-Plus 还有许多其他的功能和特性,感兴趣的读者可以查看官方文档,进一步学习和探索。
示例1:Mybatis-Plus使用代码
// UserService接口
public interface UserService extends IService<User> {
IPage<User> selectPageVo(Page<?> page, Integer state);
int[] insertBatch(List<UserDto> userList);
}
// Service 实现类
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage<User> selectPageVo(Page<?> page, Integer state) {
return userMapper.selectPageVo(page, state);
}
@Transactional(rollbackFor = Exception.class)
@Override
public int[] insertBatch(List<UserDto> userList) {
int[] result = userMapper.insertBatch(userList);
return result;
}
}
// Mapper 接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("select * from user where state = #{state}")
IPage<User> selectPageVo(Page<?> page, Integer state);
@Insert("<script> INSERT INTO user (username, password, state, create_time, update_time) VALUES "
+ "<foreach collection =\"userList\" item=\"item\" separator =\",\"> "
+ "(#{item.username,jdbcType=VARCHAR}, #{item.password,jdbcType=VARCHAR}, #{item.state,jdbcType=INTEGER}, NOW(), NOW())"
+ "</foreach> </script> ")
int[] insertBatch(List<UserDto> userList);
}
// Controller
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getById(@PathVariable Long id) {
return userService.getById(id);
}
@GetMapping("/list")
public IPage<User> list(PageRequest pageRequest, Integer state) {
Page<User> page = new Page<>(pageRequest.getPageNum(), pageRequest.getPageSize());
return userService.selectPageVo(page, state);
}
@PostMapping
public ResponseResult save(@RequestBody UserDto user) {
userService.save(user.convertToUser());
return ResponseResult.success();
}
@PostMapping("/upload")
public ResponseResult upload(@RequestBody List<UserDto> userList) {
userService.insertBatch(userList);
return ResponseResult.success();
}
}
示例2:Mybatis-Plus Demo 代码(基础CRUD操作)
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
UserService userService;
@GetMapping("/{id}")
public Object get(@PathVariable(name = "id") Long id) {
return userService.getById(id);
}
@GetMapping("/page")
public Object page(@RequestParam(defaultValue = "1") int current, @RequestParam(defaultValue = "10") int size) {
return userService.page(new Page<>(current, size));
}
@PostMapping("/")
public Object add(@RequestBody User user) {
userService.save(user);
return "success";
}
@PutMapping("/")
public Object update(@RequestBody User user) {
userService.updateById(user);
return "success";
}
@DeleteMapping("/{id}")
public Object delete(@PathVariable(name = "id") Long id) {
userService.removeById(id);
return "success";
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis-Plus 搭建与使用入门(小结) - Python技术站