• MybatisPlus的CRUD接口


    create、read、update、delete
    一、insert
    1、插入操作

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

     

    2、主键策略
    (1 ) ID_WORKER
    MyBatis-Plus 默认的主键策略是: ID_WORKER 全局唯一 ID
    (2 )自增策略
    要想主键自增需要配置如下主键策略
    需要在创建 数据表 的时候设置 主键自增
    实体字段中配置 @TableId(type = IdType.AUTO)

     

     

    二、update
    1、根据Id更新操作
    注意: update时生成的sql自动是动态sql: UPDATE user SET age=? WHERE id=?

     

    2、自动填充
    项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的 创建时间,更新时间 等。
    我们可以使用 MyBatis Plus 的自动填充功能,完成这些字段的赋值工作:
    (1 )数据库表中添加自动填充字段
    在 User 表中添加 datetime 类型的新的字段 create_time 、 update_time
    (2)实体上添加注解

     

    (3) 实现元对象处理器接口
    注意:不要忘记添加 @Component 注解

     

    3、乐观锁
    主要适用场景: 当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安
    全的数据更新
    乐观锁实现方式:
    取出记录时,获取当前version
    更新时,带上这个version
    执行更新时, set version = newVersion where version = oldVersion
    如果version不对,就更新失败
    (1)数据库中添加version字段

     ALTER TABLE `user` ADD COLUMN `version` INT

    (2)实体类添加version字段
    并添加 @Version 注解
    (3 )元对象处理器接口添加version的insert默认值

     

    特别说明:
    支持的数据类型只有 int,Integer,long,Long,Date,Timestamp,LocalDateTime
    整数类型下 newVersion = oldVersion + 1
    newVersion 会回写到 entity 中
    仅支持 updateById(id) 与 update(entity, wrapper) 方法
    在 update(entity, wrapper) 方法下, wrapper 不能复用!!!

     

    (4) 在 MybatisPlusConfig 中注册 Bean
    创建配置类

     

    (5)测试 乐观锁可以修改 成功
    测试后分析打印的sql语句,将version的数值进行了加1操作

    (5)测试乐观锁修改失败

     

    三、select
    1、根据id查询记录
    2、通过多个id批量查询
    完成了动态sql的foreach的功能
    3、简单的条件查询
    通过map封装查询条件
    注意: map 中的 key 对应的是数据库中的列名。例如数据库 user_id ,实体类是 userId ,这时 map 的
    key 需要填写 user_id

     

     

    4、分页
    MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
    (1)创建配置类
    此时可以删除主类中的 @MapperScan 扫描注解
    (2)测试selectPage分页
    测试: 最终通过 page 对象获取相关数据
    控制台 sql 语句打印: SELECT id,name,age,email,create_time,update_time FROM user LIMIT0,5

    (3)测试selectMapsPage分页:结果集是Map  

    四、delete

    1、根据id删除记录 

    2、批量删除

     

    3、简单的条件查询删除 

    4、逻辑删除
    物理删除:真实删除, 将对应数据从数据库中删除,之后查询不到此条被删除数据
    逻辑删除:假删除, 将对应数据中代表是否被删除字段状态修改为 “ 被删除状态 ” ,之后在数据
    库中仍旧能看到此条数据记录
    (1)数据库中添加 deleted字段
    (2)实体类添加deleted 字段
    并加上 @TableLogic 注解 和 @TableField(fill = FieldFill.INSERT) 注解

    (3)元对象处理器接口添加deleted的insert默认值

     

    (4 ) application.properties 加入配置
    此为默认值,如果你的默认值和 mp 默认的一样 , 该配置可无
    (5)测试逻辑删除
    测试后发现,数据并没有被删除, deleted 字段的值由 0 变成了 1
    测试后分析打印的 sql 语句,是一条 update
    注意: 被删除数据的 deleted 字段的值必须是 0 ,才能被选取出来执行逻辑删除的操作
    (7 )测试逻辑删除后的查询
    MyBatis Plus 中查询操作也会自动添加逻辑删除字段的判断

     

    测试后分析打印的 sql 语句,包含 WHERE deleted=0
    SELECT id,name,age,email,create_time,update_time,deleted FROM user WHERE deleted=0
    五、其它
    如果想进行复杂条件查询,那么需要使用条件构造器 Wapper ,涉及到如下方法
    1 、 delete
    2 、 selectOne
    3 、 selectCount
    4 、 selectList
    5 、 selectMaps
    6 、 selectObjs
    7 、 update
  • 相关阅读:
    VMware 17pro安装流程附带密钥手把手教
    为什么从没有负值的数据中绘制的小提琴图(Violin Plot)会出现负值部分?
    python基于PHP+MySQL婚介交友网站的设计与开发
    GcExcel5.2.3 中文版-Documents for Excel Java
    React-Hooks用法:useState()、useEffect()、useRef()
    基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例
    8.ProForm 遇到表单的label ,文案可能过长
    C语言错误:计算字符串中特定单词的出现次数
    Pyecharts绘制动态地图
    森林安全新保障:智能高压应急消防泵的应用
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/128166354