MyBatisPlus(简称MP)是MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。
一、安装
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
</dependency>
注意 :springboot和mybatisplus有版本冲突,这里用的是springboot3.1.7对应mybatisplus3.5.5
二、代码实现
@Data
public class User implements Serializable {
private static final long serialVersionUID = 1L;
//主键,自增
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
private String no;
private String name;
private String password;
private Integer age;
private Integer sex;
private String phone;
private Integer roleId;
@TableField("isValid")
private String isValid;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
public interface UserService extends IService<User> {
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Resource
private UserMapper userMapper;
@Override
public List<User> listDemo() {
return userMapper.listDemo();
}
public List<User> pageC(Page<User> page, Wrapper<User> wrapper){
return userMapper.pageC(page, wrapper);
}
}
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/userList")
public List<User> userList(){
return userService.list();
}
//新增
@PostMapping("/add")
public boolean add(@RequestBody User user){
return userService.save(user);
}
//修改
@PostMapping("/mod")
public boolean mod(@RequestBody User user){
return userService.updateById(user);
}
//新增or修改
@PostMapping("/addOrMod")
public boolean addOrMod(@RequestBody User user){
return userService.saveOrUpdate(user);
}
//删除
@GetMapping("/del")
public boolean del(Integer id){
return userService.removeById(id);
}
//模糊查询
@PostMapping("/listP")
public List<User> listP(@RequestBody User user){
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper();
wrapper.like(user.getName() != null, User::getName ,user.getName())
.like(user.getAge() != null, User::getAge,user.getAge());
return userService.list(wrapper);
}
}
三、分页查询
- 增加分页插件
@Configuration public class MybatisPlusConfig { /** * 拦截器 * @return */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //如果配置多个插件,务必最后添加分页插件 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //如果有多数据源可以不配置具体类型DbType //interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return interceptor; } }
- 使用分页查询
- 自带的查询方法
@RestController public class UserController { @Autowired private UserService userService; //分页查询 @PostMapping("/userPage") public Result userPage(@RequestBody QueryPageParam pageParam){ Page<User> page = new Page<>(); page.setSize(pageParam.getPageSize()); page.setCurrent(pageParam.getPageNum()); HashMap param = pageParam.getParam(); String name = (String) param.get("name"); LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); wrapper.like(name != null, User::getName,name); page = userService.page(page, wrapper); return Result.success(page.getTotal(),page.getRecords()); } }
- 自定义分页查询
@Mapper public interface UserMapper extends BaseMapper<User> { //可以用注解方式,也可以在mapper.xml配置 @Select("select * from user ${ew.customSqlSegment}}") List<User> pageC(Page<User> page, @Param(Constants.WRAPPER) Wrapper<User> wrapper); }
<?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.wms.mapper.UserMapper"> <select id="pageC" resultType="com.wms.entity.User"> select * from user ${ew.customSqlSegment} </select> </mapper>
这里service层就不贴代码了
@RestController public class UserController { @Autowired private UserService userService; //自定义分页查询 @PostMapping("/pageC") public Result pageC(@RequestBody QueryPageParam pageParam){ Page<User> page = new Page<>(); page.setCurrent(pageParam.getPageNum()); page.setSize(pageParam.getPageSize()); String name = (String) pageParam.getParam().get(("name")); LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); wrapper.like(name != null, User::getName,name); List<User> list = userService.pageC(page, wrapper); return Result.success(list.size(),list); } }
- 自带的查询方法