Mybatis-Plus -- CRUD

228 阅读2分钟

这是我参与更文挑战的第8天,活动详情查看: 更文挑战

CRUD

上一篇入门我们查到了 user表的所有内容

Delete

// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 ID 删除
int deleteById(Serializable id);
// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

根据id删除

 @Test
    public void testDelect(){
        userMapper.deleteById(1);
    }

image.png

根据id批量删除

 @Test
    public void testDelectArr(){
        userMapper.deleteBatchIds(Arrays.asList(2,3));
    }

查看后台执行的日志看到是in删除了两个

image.png

再看数据库

image.png

根据map删除

删除名字叫sandyde

   @Test
    public void testDelectmap(){
        HashMap<String, Object> objectObjectHashMap = new HashMap<>();
        objectObjectHashMap.put("name","Sandy");
        userMapper.deleteByMap(objectObjectHashMap);
    }

image.png

image.png

update

// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);

根据id修改

更新id为5的年龄1000岁

   @Test
    public void updateByid(){
        User user = new User();
        user.setId(5L);
        user.setAge(1000);
        userMapper.updateById(user);
    }

image.png

image.png

select

我们在执行下之前的脚本 加几条数据

   //根据id查找
    @Test
    public void selectByid(){
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }

    //根据v多个id查找
    @Test
    public void selectByidS(){
        List<User> users = userMapper.selectBatchIds(Arrays.asList(2L, 3L, 1L));
        for (User user : users) {
            System.out.println(user);
        }
    }
    //根据map条件查找
    @Test
    public void SelectByBatchIds(){
        HashMap<String, Object> objectObjectHashMap = new HashMap<>();
        objectObjectHashMap.put("name","Sandy");
        List<User> users = userMapper.selectByMap(objectObjectHashMap);
        for (User user : users) {
            System.out.println(user);
        }
    }

分页查询

配置拦截器

//Spring boot方式
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {

    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }
}

测试类


@Test
    public void selectPage(){
        //当前页,也页面大小
        Page<User> objectPage = new Page<>(2,2);
        Page<User> userPage = userMapper.selectPage(objectPage, null);
        for (User record : userPage.getRecords()) {
            System.out.println(record);
        }
    }

看控制台输出和日志语句 其实也是根据limit来查的

image.png

insert

// 插入一条记录
int insert(T entity);
  @Test
    public void test1(){
        User user = new User();
        user.setAge(12);
        user.setEmail("100000000@qq.com");
        user.setName("里斯");
        userMapper.insert(user);
    }

查看数据库 新增成功

image.png

我们插入的时候其实是没有写id的 自动生成了一个 很长的id,这个就是全局唯一id--雪花算法

snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为 毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味 着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证几乎全球唯 一!

主键生成策略 uuid,自增id,雪花算法等等

public enum IdType {
    AUTO(0),//自增
    NONE(1),//未设置
    INPUT(2),//手动输入
    ASSIGN_ID(3),//雪花算法
    ASSIGN_UUID(4);//uuid 全剧唯一