栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MybatisPlus的CRUD接口(1)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MybatisPlus的CRUD接口(1)

insert

1.插入操作
@RunWith(SpringRunner.class)
@SpringBootTest
public class CRUDTests {

    @Autowired
    private UserMapper userMapper;
    @Test
    public void testInsert(){
        User user = new User();
        user.setName("yu");
        user.setAge(25);
        user.setEmail("1321017180@qq.com");
        int result = userMapper.insert(user);
        System.out.println(result); //影响的行数
        System.out.println(user); //id自动回填
    }
}

注意:不需要设置id值,因为mybatisPlus自动生成一个19位的id值

2.主键策略

策略的几种类型

public enum IdType {
    
    AUTO(0),
    
    NONE(1),
    
    INPUT(2),

    
    
    ID_WORKER(3),
    
    UUID(4),
    
    ID_WORKER_STR(5);
}

(1)自增策略

 自增策略的两个必要条件

  1. 需要在创建数据库表的时候设置主键自增
  2. 实体字段中配置 @TableId(type = IdType.AUTO
@TableId(type = IdType.AUTO)
private Long id;

优点:简单,代码方便,性能可以接受,排序。

 缺点:分表分库的时候会有麻烦。因为后面的白会依赖前面的。

全局主键配置是在application.properties文件中加入

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

局部策略

主键设置主键策略使用注解方式为

@TableId(type = IdType.ID_WORKER)//mp自带策略,生成19位值,数字类型使用这种策略
@TableId(type = IdType.ID_WORKER_STR)//mp自带策略,生成19位值,字符串类型使用这种策略
private Long id;
(2)UUID

  随机唯一值

UUID是由32个的16进制数字组成,所以每个UUID的长度是128位(16^32 = 2^128)。

优点:

1)简单,代码方便。

2)生成ID性能非常好,基本不会有性能问题。

3)可以做安全设置。

缺点:

1)没有排序,无法保证趋势递增。

2)UUID往往是使用字符串存储,查询的效率比较低。

@TableId(type = IdType.UUID)

(3)MybatisPlus自带的雪花算法

   核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。

@TableId(type = IdType.ID_WORKER)//mp自带策略,生成19位值,数字类型使用这种策略 @TableId(type = IdType.ID_WORKER_STR)//mp自带策略,生成19位值,字符串类型使用这种策略

(4)Redis生成ID

比较适合使用Redis来生成每天从0开始的流水号。比如订单号=日期+当日自增长号。可以每天在Redis中生成一个Key,使用INCR进行累加。

优点:

1)不依赖于数据库,灵活方便,且性能优于数据库。

2)数字ID天然排序,对分页或者需要排序的结果很有帮助。

缺点:

1)如果系统中没有Redis,还需要引入新的组件,增加系统复杂度。

2)需要编码和配置的工作量比较大。

二、update

1、根据Id更新操作

2.自动填充

不需要set到对象里面的值,使用mybatisplus的方式实现数据

项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。

我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作

传统的创建方式

自动方式 

(1)数据库表中添加自动填充字段

  在User表中添加datetime类型的新的字段 create_time、update_time

(2)实体类加注解

@Data
public class User {
   ........
    @TableField(fill = FieldFill.INSERT)
    private Date creatTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

}

(3)实现元对象处理器接口

创建类实现接口MetaObjectHandler实现接口中的方法

注意:不要忘记添加 @Component 注解,表示交给Spring进行管理

 (4)测试自动填充成功

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号