MyBatis-Plus

发布时间:2023年12月21日

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

官网:MyBatis-Plus

引入maven坐标

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

?常用注解

  • @TableName

  • 类型:类注解

  • 位置:模型类上

  • 作用:设置当前类对应与数据库表关系

  • 范例:

@TableName("t_user") //当前实体类对应的表为t_user
public class User {
    private Long id;
}

如果类名使用驼峰命名法命名,表名使用对应的下划线分隔命名,MP可以自动进行映射


?

  • @TableField

  • 类型:属性注解

  • 位置:模型类属性上

  • 作用:设置当前属性对应的数据库表中的字段关系

  • 相关属性

    value:设置数据库表字段名称

    exist:设置属性在数据库表字段中是否存在,默认为true

  • 范例

    public class User {
        @TableField(value="pwd") //当前属性对应的字段为pwd
        private String password;
        
        @TableField(exist = false) //当前属性在表中没有对应的字段
        private String online;
    }

    如果属性名和字段名一致,MP可以自动进行映射,此时 @TableField 注解可以省略

    如果属性名使用驼峰命名法命名,字段名使用对应的下划线分隔命名,MP可以自动进行映射,此时 @TableField 注解可以省略。


?

  • @TableId

  • 类型:属性注解

  • 位置:模型类中用于表示主键的属性上

  • 作用:映射类中属性和表中主键对应关系,设置主键的生成策略

  • 相关属性:

    value:设置数据库主键字段名称,如果属性名和字段名一致,可以省略此属性

    type:设置主键属性的生成策略,值参照IdType枚举值

  • 范例:

    public class User {
        @TableId(type = IdType.AUTO) //当前id属性和表的主键字段id对应,并且设置主键生成策略为AUTO
        private Long id;
    }
  • 主键生成策略:

    • AUTO(0):使用数据库id自增策略控制id生成

    • NONE(1):不设置id生成策略

    • INPUT(2):用户手工输入id

    • ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)

    • ASSIGN_UUID(4):以UUID生成算法作为id生成策略

  • 为了简化开发,可以在application.yml中配置全局的主键生成策略

    • mybatis-plus:
        global-config:
          db-config:
            id-type: assign_id #全局设置主键生成策略

新增操作?

        User user = new User();
        user.setName("张四");
        user.setAge(34);
        user.setPassword("111111111");
        user.setTel("1333344556");

        log.info("user:{}",user);
        userMapper.insert(user);

删除操作

/**
 * 测试Mapper接口的delete方法,可以删除数据
 */
@Test
void testDelete(){
    //根据id删除数据
    int i = userMapper.deleteById(1624945956237721601L);
    System.out.println(i);

    //根据id批量删除数据
    int batchIds = userMapper.deleteBatchIds(Arrays.asList(1625061142848167937L, 1625061824372146177L));
    System.out.println(batchIds);
}
//        根据id删除
userMapper.deleteById(1);
//        根据id批量删除
int i = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4, 5));

?修改操作

/**
 * 测试Mapper接口的update方法,根据id修改数据
 */
@Test
void testUpdate(){
    User user = new User();
    user.setId(12L);
    user.setName("张三");

    int i = userMapper.updateById(user);
    System.out.println(i);
}

查询操作

  • 分页查询前需要设置分页拦截器
  • @Configuration
    public class MPConfiguration {
    
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor(){
            MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
            //添加分页拦截器,实现分页查询功能
            mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
            return mybatisPlusInterceptor;
        }
    
    }
    /**
     * 测试Mapper接口的select方法,可以查询数据
     */
    @Test
    void testSelect(){
        //根据id查询数据
        User user = userMapper.selectById(1625307405933957121L);
        System.out.println(user);
    
        //根据id批量查询数据
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1625307405933957121L, 1625310776384380930L));
        System.out.println(users);
    
        //分页查询条件对象
        Page<User> page = new Page<>(1,5);
        //分页查询
        userMapper.selectPage(page,null);
        System.out.println(page);
    
        //总记录数
        long total = page.getTotal();
        //分页结果数据
        List<User> records = page.getRecords();
    }

    条件构造器

?

文章来源:https://blog.csdn.net/qq_57667629/article/details/135119498
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。