Title

mybatis-plusCRUD

CRUD扩展

Insert

    @Test
    void insetTest(){
        User user = new User();
        user.setName("张三");
        user.setAge(22);
        user.setEmail("test6@baomidou.com");
        userMapper.insert(user);
    }

输出日志:

==>  Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
==> **Parameters: 1515522523939737601(String)**, 张三(String), 22(Integer), test6@baomidou.com(String)
<==    Updates: 1

数据库插入的id的默认值为:全局的唯—id

主键生成策略

分布式系统唯一Id生成:https://www.cnblogs.com/haoxinyue/p/5208136.html

@TableId(type = IdType.AUTO)
/**
 * AUTO         自增
 * NONE         无
 * ASSIGN_ID    全球唯一代替了ID_WORDKER
 * ASSIGN_UUID  UUID
 * INPUT        需要手动输入
 **/
private String id;

Update

    @Test
    void updateTest(){
        User user = new User();
        user.setId("1515522523939737601");
        user.setName("Bob");
        userMapper.updateById(user);
    }

Select

多个查询

    //BatchIds给id赋予多个值
    @Test
    void selectBatchIds(){
        List<User> userList = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        for (User user : userList) {
            System.out.println(user);
        }
    }

map查询

    //条件查询
    @Test
    void selectByMap(){
        Map<String, Object> map = new HashMap<>();
        map.put("name","Jone");
        List<User> userList = userMapper.selectByMap(map);
        for (User user : userList) {
            System.out.println(user);
        }
    }

分页查询

分页在网站的使用十分之多!

1、原始的limit分页

2、pageHelper第三方插件

3、MybatisPlus其实也内置了分页插件!

如何使用:

1、配置拦截器组件

//配置类上加注解
@Configuration
public class MyBatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor paginationInnerInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor =new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return mybatisPlusInterceptor;
    }
}

2、直接使用page对象即可

 @Test
    void setUserMapper(){
        Page<User> page = new Page<>(2,3);
        Page<User> userPage = userMapper.selectPage(page, null);
        List<User> records = page.getRecords();
       records.forEach(System.out::println);
    }

Delete

跟update差不多

    @Test
    void delete(){
        userMapper.deleteById(7);
        
        userMapper.deleteBatchIds(Arrays.asList(7,8));
        
        Map<String, Object> map = new HashMap<>();
        map.put("name","John");
        userMapper.deleteByMap(map);
        
    }

逻辑删除

物理删除:从数据库中直接删除 (回收站)

逻辑删除:在数据库中没有被删除,而是通过一个变量来使他失效! deleted=0 ==> deleted=1 (假删除)

1、在数据表中增加一个deleted字段

2、实体类中添加对应属性

@TableLogic//逻辑删除注解private Integer deleted;

3、配置!

#逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

4、测试

@Test
void testDeleteById(){
    userMapper.deleteById(7);
}
posted @ 2022-04-17 14:47  手中的小黄鸭  阅读(25)  评论(0)    收藏  举报