MP快速入门

  • SpringBoot 整合 MyBatis-Plus,并==实现根据Id查询功能==
  • 数据库环境准备
  • 创建工程,引入场景依赖 ```xml org.springframework.boot spring-boot-starter-parent 2.3.10.RELEASE
1.8

mysql mysql-connector-java 5.1.26 org.projectlombok lombok true

org.springframework.boot spring-boot-starter-test test com.baomidou mybatis-plus-boot-starter 3.4.2

  1. - 编写DataSource相关配置
  2. ```yaml
  3. # datasource
  4. spring:
  5. datasource:
  6. url: jdbc:mysql://192.168.200.150:3306/mp?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
  7. username: root
  8. password: root
  9. driver-class-name: com.mysql.jdbc.Driver
  10. #mybatis-plus配置控制台打印完整带参数SQL语句
  11. mybatis-plus:
  12. configuration:
  13. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  • 编码

    • 实体类

      @TableName("tb_user") // 指定表名
      @Data
      @NoArgsConstructor
      @AllArgsConstructor
      @Builde
      public class User {
      private Long id;
      private String userName;
      private String password;
      private String name;
      private Integer age;
      private String email;
      }
      

      @TableName(“tb_user”) : 如果数据库的表名和实体类一致时可以省略

    • 编写mapper ```java /**

      • 使用mp定义Mapper,需要让Mapper接口继承 BaseMapper接口。 */ public interface UserMapper extends BaseMapper {

}


   - 启动类增加 @MapperScan 注解
```java
@SpringBootApplication
@MapperScan("com.itheima.sh.mapper")
public class MpApplication {
    public static void main(String[] args) {
        SpringApplication.run(MpApplication.class, args);
    }
}

MP实现常规增删改操作

  • 插入操作

    @Test
    public void testInsert() {
    User user =
      User.builder() 
      .userName("itheima")
      .name("itcast")
      .age(15)
      .email("itcast@itcast.cn")
      .password("111111")
      .build();
    int insert = userMapper.insert(user);
    System.out.println(insert);
    }
    
  • 注解@TableId介绍

    @TableId注解作用:
      1.标识实体类中主键对应属性;
      2.定义主键生成策略;
    @TableId使用:
      添加在实体类的主键对应的成员属性上即可;
    
  • MP常用主键生成策略

image.png

  • MP实现更新操作

    @Test
    public void testUpdateById() {
    User user = new User();
    user.setId(2L);
    user.setPassword("1111111");
    int count = userMapper.updateById(user);
    }
    
  • MP实现查询操作

    • MP实现分页查询
      • 配置分页拦截器 ```java package com.itheima.sh.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;

/**

  • @Description:
  • @Version: V1.0 */ @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() {

     MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    
     PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
     // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
     // paginationInterceptor.setOverflow(false);
     // 设置最大单页限制数量,-1不受限制
     paginationInterceptor.setMaxLimit(-1L);
     interceptor.addInnerInterceptor(paginationInterceptor);
     return interceptor;
    

    }

}


      - 查询测试
```java
/**
  * 分页查询:
  *  1. 当前页码:currentPage
  *  2. 每页显示条数:size
  *
  *  注意:使用mp的分页要设置一个拦截器!!!
*/
@Test
public void testSelectPage() {
  int current = 1;//当前页码
  int size = 2;//每页显示条数
  IPage<User> page = new Page(current,size);
  userMapper.selectPage(page,null);
  List<User> records = page.getRecords();//当前页的数据
  long pages = page.getPages();//总页数 2
  long total = page.getTotal();//总记录数 4
  System.out.println(records);
  System.out.println(pages);
  System.out.println(total);
}

QueryWrapper实现基础查询

  • QueryWrapper常用API

    eq( ) :  等于 =
    ne( ) :  不等于 <>
    gt( ) :  大于 >
    ge( ) :  大于等于  >=
    lt( ) :  小于 <
    le( ) :  小于等于 <=
    between ( ) :  BETWEEN 值1 AND 值2 
    notBetween ( ) :  NOT BETWEEN 值1 AND 值2 
    in( ) :  in
    notIn( ) :not in
    
  • QueryWrapper模糊查询like

    like("表列名","条件值");     作用:查询包含关键字的信息,底层会自动添加匹配关键字,比如:%条件值%
    likeLeft("表列名","条件值"); 作用:左侧模糊搜索,也就是查询以指定条件值结尾的数据,比如:%条件值
    likeRight("表列名","条件值");作用:右侧模糊搜索,也就是查询以指定条件值开头的数据,比如:条件值%
    
  • 代码演示

      /**
       * 模糊查询
       */
      @Test
      public void testWrapper3(){
          //1.创建查询条件构建器
          QueryWrapper<User> wrapper = new QueryWrapper<>();
          //2.设置条件
          wrapper.likeLeft("user_name","zhang");
          /*
              SELECT id,user_name,password,name,age,email
               from tb_user
               where user_name like ?
               %zhang
           */
          List<User> users = userMapper.selectList(wrapper);
          System.out.println(users);
      }
    

    MP封装Service实现

  • 定义服务扩展接口 ```java //在公共接口的基础上扩展 public interface UserService extends IService {

}

定义服务实现
```java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}