MyBatisPlus入门用法

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);
    }
}

三、分页查询

  1. 增加分页插件
    @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;
        }
    }

  2. 使用分页查询
    1. 自带的查询方法
      @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());
          }
      }
    2. 自定义分页查询
      @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);
          }
      }

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值