mybatis-plus 查询,删除


mybatis-plus 新增,修改


查询 单值,多个主键,条件

    @Test
    void queryOne() {
    
    
        // 查询单个user
        User user = userMapper.selectById(1);

        System.out.println(user);
    }

    @Test
    void queryBatchUser() {
    
    
        // 根据id查询多个user
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        users.forEach(System.out::println);
    }

    @Test
    void queryByMap() {
    
    
        // 多条件查询
        Map<String, Object> conditionParamMap = new HashMap<>();

        conditionParamMap.put("name", "Jack");
        conditionParamMap.put("id", "2");

        List<User> users = userMapper.selectByMap(conditionParamMap);
        users.forEach(System.out::println);
    }

分页查询

package cn.bitqian.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * mybatis plus配置类
 * @author echo lovely
 * @date 2020/11/15 09:48
 */

@EnableTransactionManagement // 开启事务
@MapperScan("cn.bitqian.mapper")
@Configuration
public class MyBatisPlusConfig {
    
    

    // mybatis插件注册
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
    
    

        // 分页查询
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();

        // 添加分页查询到插件中
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);

        return mybatisPlusInterceptor;

    }

}


分页测试

    @Test
    void queryByPaging() {
    
    
        int pageNum = 1;
        int pageSize = 5;
        Page<User> page = new Page<>(pageNum, pageSize);

        Page<User> userPage = userMapper.selectPage(page, null);

        // 遍历 user
        userPage.getRecords().forEach(System.out::println);
    }

物理删除,逻辑删除

物理删除:是真的把数据库从数据删除。


多条件删除

    @Test
    void deleteById() {
    
    
        // ctrl shift z
       userMapper.deleteById(1327447426226786310l);
    }

    @Test
    void deleteBatchByIds() {
    
    
        userMapper.deleteBatchIds(
                Arrays.asList(1327447426226786306l,
                        1327447426226786307l));
    }

    @Test
    void deleteBatchByCondition() {
    
    
        Map<String, Object> conditionParamMap = new HashMap<>();

        // 删除name为abc的
        conditionParamMap.put("name", "abc");

        userMapper.deleteByMap(conditionParamMap);
    }

逻辑删除:有一个专门对应的列,表示删除状态的列。删除执行的是修改。
当查询的时候,查询没被改的状态。修改与查询同理。


为user表添加字段

 // 逻辑删除字段
  @TableLogic
  private int deleted;


配置yaml,做逻辑删除会修改的值

# log4j std out
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  # global 逻辑删除配置
  global-config:
    db-config:
      logic-delete-field: deleted  # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置@TableLogic注解)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

测试删除

    // 逻辑删除 实际上是修改
    @Test
    void deleteByLogic() {
    
    
        // 被逻辑删除后的值不会被查询,修改到
        // SELECT id,name,age,email,version,deleted,gmt_create,gmt_modify FROM user WHERE id=? AND deleted=0
        userMapper.deleteById(1l);
    }

delete ⇒ update

猜你喜欢

转载自blog.csdn.net/qq_44783283/article/details/109708332