package com.videos;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class MybatisPlusApplicationTests {

//    // 继承了BaseMapper，所有的方法都来自己父类
//    // 我们也可以编写自己的扩展方法！
//    @Autowired
//    private PlaybackRecordMapper playbackRecordMapper;
//
//    @Test
//    void contextLoads() {
//        // 参数是一个 Wrapper ，条件构造器，这里我们先不用 null
//        // 查询全部用户
//        List<PlaybackRecord> playbackRecords = playbackRecordMapper.selectList(null);
//        playbackRecords.forEach(System.out::println);
//    }
//
//    // 测试插入
//    @Test
//    public void testInsert(){
//        PlaybackRecord playbackRecord = new PlaybackRecord();
//        playbackRecord.setUrl("www.baidu.com");
//        playbackRecord.setSharerId("123456");
//        playbackRecord.setShareeId("654321");
//
//        int result = playbackRecordMapper.insert(playbackRecord); // 帮我们自动生成id
//        System.out.println(result); // 受影响的行数
//        System.out.println(playbackRecord); // 发现，id会自动回填
//    }
//
//    // 测试更新
//    @Test
//    public void testUpdate(){
//        PlaybackRecord playbackRecord = new PlaybackRecord();
//        // 通过条件自动拼接动态sql
//        playbackRecord.setShareeId("123456");
//        // 注意：updateById 但是参数是一个 对象！
//        int i = playbackRecordMapper.updateById(playbackRecord);
//        System.out.println(i);
//    }
//
//    // 测试乐观锁成功！
//    @Test
//    public void testOptimisticLocker(){
//        // 1、查询用户信息
//        PlaybackRecord playbackRecord = playbackRecordMapper.selectById(1L);
//        // 2、修改用户信息
//        playbackRecord.setShareeId("123456");
//        // 3、执行更新操作
//        playbackRecordMapper.updateById(playbackRecord);
//    }
//
//
//    // 测试乐观锁失败！多线程下
//    @Test
//    public void testOptimisticLocker2(){
//
//        // 线程 1
//        PlaybackRecord playbackRecord = playbackRecordMapper.selectById(1L);
//        playbackRecord.setShareeId("123456");
//
//        // 模拟另外一个线程执行了插队操作
//        PlaybackRecord playbackRecord2 = playbackRecordMapper.selectById(1L);
//        playbackRecord.setShareeId("123456");
//        playbackRecordMapper.updateById(playbackRecord2);
//
//        // 自旋锁来多次尝试提交！
//        playbackRecordMapper.updateById(playbackRecord); // 如果没有乐观锁就会覆盖插队线程的值！
//    }
//
//    // 测试查询
//    @Test
//    public void testSelectById(){
//        PlaybackRecord playbackRecord = playbackRecordMapper.selectById(1L);
//        System.out.println(playbackRecord);
//    }
//
//    // 测试批量查询！
//    @Test
//    public void testSelectByBatchId(){
//        List<PlaybackRecord> playbackRecords = playbackRecordMapper.selectBatchIds(Arrays.asList(1, 2, 3));
//        playbackRecords.forEach(System.out::println);
//    }
//
//    // 按条件查询之一使用map操作
//    @Test
//    public void testSelectByBatchIds(){
//        HashMap<String, Object> map = new HashMap<>();
//        // 自定义要查询
//        map.put("sharer_id","123456");
//
//        List<PlaybackRecord> playbackRecords = playbackRecordMapper.selectByMap(map);
//        playbackRecords.forEach(System.out::println);
//    }
//
//    // 测试分页查询
//    @Test
//    public void testPage(){
//        //  参数一：当前页
//        //  参数二：页面大小
//        //  使用了分页插件之后，所有的分页操作也变得简单的！
//        Page<PlaybackRecord> page = new Page<>(2,5);
//        playbackRecordMapper.selectPage(page,null);
//
//        page.getRecords().forEach(System.out::println);
//        System.out.println(page.getTotal());
//
//    }
//
//
//    // 测试删除
//    @Test
//    public void testDeleteById(){
//        playbackRecordMapper.deleteById(1L);
//    }
//
//    // 通过id批量删除
//    @Test
//    public void testDeleteBatchId(){
//        playbackRecordMapper.deleteBatchIds(Arrays.asList(1240620674645544961L,1240620674645544962L));
//    }
//
//    // 通过map删除
//    @Test
//    public void testDeleteMap(){
//        HashMap<String, Object> map = new HashMap<>();
//        map.put("name","123456");
//        playbackRecordMapper.deleteByMap(map);
//    }

}
