3. MybatisPlus的增删改查

MyBatisPlus实现增删改查

1. 插入数据insert

主键生成策略我们使用默认的ID_WORKERID_WORKER_STR策略
userMapper

@RunWith(SpringRunner.class)
@SpringBootTest
public class CRUDTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert(){
        User user = new User();

        user.setName("HeMiao2");
        user.setAge(28);
        user.setEmail("55317332@qq.com");
        
        int result = userMapper.insert(user);

        // 影响的行数
        System.out.println(result); 

        // id自动回填
        System.out.println(user); 
    }
}

注意:数据库插入id值默认为:全局唯一id

在这里插入图片描述

2. 更新数据update

2.1 根据Id更新操作

注意:update时生成的sql自动是动态sql:UPDATE user SET age=? WHERE id=?

    @Test
    public void testUpdateById(){
        User user = new User();
        user.setId(1L);
        user.setAge(48);

        int result = userMapper.updateById(user);

        System.out.println(result);

    }

3. 查询数据select

3.1 根据id查询记录
    /**
     * 根据id查询记录
     */
    @Test
    public void testSelectById(){
        User user = userMapper.selectById(1L);
        System.out.println("user = " + user);
    }
3.2 通过多个id批量查询

完成了动态sql的foreach的功能

    /**
     * 通过多个id批量查询
     */
    @Test
    public void  testSelectBatchIds(){
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        users.forEach(System.out::println);
    }
3.3 简单的条件查询

通过map封装查询条件

注意:

  • map中的key对应的是数据库中的列名。例如数据库user_id,实体类是userId,这时map的key需要填写user_id
    /**
     * 通过map封装查询条件
     */
    @Test
    public void testSelectByMap(){
        Map<String,Object> map = new HashMap<>();
        // map.put("name","Helen");
        map.put("age",28);
        List<User> users = userMapper.selectByMap(map);
        // forEach遍历
        users.forEach(System.out::println);
    }
3.4 分页查询

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

在这里插入图片描述

1. 创建配置类

此时可以删除主类中的 @MapperScan扫描注解,把它移到配置类MyBatisPlusConfig中。

/**
 * @Date 2020/4/10 22:53
 * @Version 10.21
 * @Author DuanChaojie
 */
@Configuration
@EnableTransactionManagement
@MapperScan("cn.justweb.mybatisplus.mapper")
public class MyBatisPlusConfig {

    /**
     * 乐观锁插件
     * @return
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }

    /**
     * 分页插件
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
}
2. 测试selectPage分页

测试:最终通过page对象获取相关数据

控制台sql语句打印:SELECT id,name,age,email,create_time,update_time FROM user LIMIT 0,5

    @Test
    public void testSelectPage(){
        Page<User> page = new Page<>(1, 5);
        userMapper.selectPage(page,null);
        System.out.println("分页查找的内容:");
        page.getRecords().forEach(System.out::println);

        // 当前页
        System.out.println("page.getCurrent() = " + page.getCurrent());
        // 总页数
        System.out.println("page.getPages() = " + page.getPages());
        // 每页个数
        System.out.println("page.getSize() = " + page.getSize());
        // 总记录数
        System.out.println("page.getTotal() = " + page.getTotal());
        //
        System.out.println("page.hasPrevious() = " + page.hasPrevious());

    }
3.测试selectMapsPage分页
  • 结果集是Map
@Test
public void testSelectMapsPage() {

    Page<User> page = new Page<>(1, 5);

    IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(page, null);

    //注意:此行必须使用 mapIPage 获取记录列表,否则会有数据类型转换错误
    mapIPage.getRecords().forEach(System.out::println);
    
    System.out.println(page.getCurrent());
    System.out.println(page.getPages());
    System.out.println(page.getSize());
    System.out.println(page.getTotal());
    System.out.println(page.hasNext());
    System.out.println(page.hasPrevious());
}
3.5 其它查询

如果想进行复杂条件查询,那么需要使用条件构造器 Wapper,涉及到如下方法

  1. delete
  2. selectOne
  3. selectCount
  4. selectList
  5. selectMaps
  6. selectObjs
  7. update

4. 删除数据delete

4.1 根据id删除记录
    /**
     * 根据id删除记录
     */
    @Test
    public void testDeleteById(){
        int result = userMapper.deleteById(1L);
        System.out.println("result = " + result);
    }
4.2 批量删除
    /**
     * 根据ids批量删除
     */
    @Test
    public void testDeleteBatchIds(){
        int result = userMapper.deleteBatchIds(Arrays.asList(2L, 3L));
        System.out.println("result = " + result);
    }
4.3 简单的条件查询删除
	  /**
     * 简单的条件查询删除
     */
    @Test
    public void testDeleteByMap(){
        Map<String,Object> map = new HashMap<>();
        map.put("name","Helen");
        map.put("age",18);
        int result = userMapper.deleteByMap(map);
        System.out.println("result = " + result);

    }
4.4 配置逻辑删除

后面会再讲

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值