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 {@Resourceprivate UserMapper userMapper;@Overridepublic 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 {@Autowiredprivate 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*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();//如果配置多个插件,务必最后添加分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果有多数据源可以不配置具体类型DbType//interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;} }
- 使用分页查询
- 自带的查询方法
@RestController public class UserController {@Autowiredprivate 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 {@Autowiredprivate 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);} }
- 自带的查询方法