一篇文章带你掌握MyBatis简化框架——MyBatisPlus(13)


  • 网络编号:随机ID生成
  • 因此MyBatisPlus提供了一种新的注解来实现这类需求:
    • 名称:@TableId
    • 类型:属性注解
    • 位置:模型类中用于表示主键的属性定义上方
    • 作用:设置当前类中主键属性的生成策略
    • 相关属性:value设置数据库主键名称,type设置主键生成策略具体参考IdType枚举值
    ID生成策略枚举值:
    • AUTO(0):使用数据库id自增策略控制id生成
    • NONE(1):不设置ID生成策略
    • INPUT(2):用户手工输入ID
    • ASSIGN_ID(3):雪花算法生成ID(可兼容数值型与字符串型)
    • ASSIGN_UUID(4):以UUID生成算法作为ID生成策略
    我们给出示例演示:
    package com.itheima.domain;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableLogic;import com.baomidou.mybatisplus.annotation.Version;import lombok.Data;@Data//设置表名映射关系@TableName("tbl_user")public class User {    //设置主键生成策略(这里设置为自增)    @TableId(type = IdType.AUTO)    private Long id;    private String name;    @TableField(value = "pwd",select = false)    private String password;    private Integer age;    private String tel;    @TableField(exist = false)    private Integer online;    private Integer deleted;    private Integer version;}我们也可以同一设置@TableId的type属性,使整个项目的@TableId都以一种形态执行:
    # dataSourcespring:  datasource:    type: com.alibaba.druid.pool.DruidDataSource    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC    username: root    password: root  main:    banner-mode: off# mp日志mybatis-plus:  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  global-config:    banner: false    db-config:      id-type: assign_id # 设置为雪花算法设置ID多记录操作我们在实际开发中常常会进行多条记录操作:
    • 根据主键删除多条操作
    • 根据主键查询多条操作
    MyBatisPlus也为我们提供了相对应的方法:
    package com.itheima;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.itheima.dao.UserDao;import com.itheima.domain.User;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.ArrayList;import java.util.List;@SpringBootTestclass Mybatisplus03DqlApplicationTests {    @Autowired    private UserDao userDao;    @Test    void testDelete(){        //删除指定多条数据        //deleteBatchIds参数为数组形式,我们提供id的数组即可        List<Long> list = new ArrayList<>();        list.add(1402551342481838081L);        list.add(1402553134049501186L);        list.add(1402553619611430913L);        userDao.deleteBatchIds(list);    }    @Test    void testSelect()}{        //查询指定多条数据     //selectBatchIds参数为数组形式,我们提供id的数组即可        List<Long> list = new ArrayList<>();        list.add(1L);        list.add(3L);        list.add(4L);        userDao.selectBatchIds(list); }}

    经验总结扩展阅读