mybatis-plus是一款基于mybatis的持久层框架,在mybatis上只做增强不做改变。基本使用流程:

  1. 导入依赖坐标:

    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>Latest Version</version>
    </dependency>
  2. 在yml文件中配置使用的数据源。
  3. mybatisplus分别在dao层和service层提供了基础的接口,提供了基础的增删改查实现。只需要继承BaseMapper和Iservice接口。
  4. 在mybatis-plus中集成了分页插件,需要在配置类中将插件配置成bean加入容器中。
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
    MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
    mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return mybatisPlusInterceptor;
    }
  5. 集成日志配置,在yml文件中配置:
    mybatis-plus:
    configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  6. id生成:mybatis-plus自带主键生成策略,使用注解
    @TableId(type = IdType.AUTO)
    private Long id;
  7. 自动填充,一般数据库中都有修改时间,新增时间等字段,mybatis-plus可以通过配置生成策略自动生成。代码中在实体类上需要自动填充的字段使用注解标注。
    @TableField(value = "gmt_create",fill = FieldFill.INSERT)
    private Date gmtCreate; @TableField(value = "gmt_modified",fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;

    需要将自动填充策略作为bean添加到容器中,自定义填充字段的生成策略。

    @Slf4j
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
    log.info("start insert fill....");
    this.setFieldValByName("gmtCreate",new Date(),metaObject);
    this.setFieldValByName("gmtModified",new Date(),metaObject);
    } @Override
    public void updateFill(MetaObject metaObject) {
    log.info("start update fill....");
    this.setFieldValByName("gmtModified",new Date(),metaObject);
    }
    }
  8. 逻辑删除字段处理,实际开发中数据库的字段一般不会进行物理删除,通常使用逻辑删除修改标记位。mybatis-plus中使用注解@Tablelogic实现,数据库增加逻辑删除字段,实体类上标注
    @TableLogic(value = "1",delval = "0") //逻辑删除
    private Integer deleted;

    在yml文件中指明逻辑删除标记位:

    mybatis-plus:
    global-config:
    db-config:
    logic-delete-field: deleted # 逻辑删除的字段
    logic-delete-value: 1 # 1代表删除
    logic-not-delete-value: 0 # 0代表未删除
  9. 乐观锁/悲观锁 mybatis-plus中使用@Version字段实现乐观锁,数据库添加version字段,实体类处理:
    @Version
    private Integer version;

    将乐观锁组件注册到IOC中

    @Bean
    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor(){
    return new OptimisticLockerInnerInterceptor();
    }
  10. mybatis-plus处理枚举字段,使用自定义的枚举类表示,可以使用@EnumValue注解加在要保存进数据库中的字段上,mp将会自动映射。使用@JsonValue加在枚举类中要返回给前端的属性的get方法上,返回时将会自动映射,如SexEnum中返回前端的就是(“男人”/“女人”).
    public enum SexEnum {
    MAN(1, "男人"),
    WOMAN(0, "女人"); @EnumValue
    private int code; private String value; SexEnum(int code, String value) {
    this.code = code;
    this.value = value;
    } public int getCode() {
    return code;
    } @JsonValue
    public String getValue() {
    return value;
    }
    }

    yml文件中配置

    mybatis-plus:
    type-enums-package: com.codeyoung.json.domain # 指定枚举类所在的包
    configuration:
    default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler # 指定默认枚举类处理器
  11. mybatis-plus处理json字段的数据,如果数据库中字段为json格式的字符串,可以使用@TableFiled(Typehandler=JacksonTypeHandler.class)实现javatype到jdbctype的互转,可以将实体类对象转为json字符串存入到表中。
    @Data
    public class Foo {
    private Long id;
    private String bar;
    private Bar barObj;
    private Date createTime;
    } @Data
    public class Bar {
    private String name;
    private Integer quz;
    private Date timestamp;
    }

mybatis-plus使用心得的更多相关文章

  1. mybatis 关联表心得

    1,例如订单表与用户表的关联,一个订单对应一个用户,这是一对一关联: 用代码实现是这样: A(用resultType去实现的话,如下) 1,使用到继承, OrderUser extend Order{ ...

  2. spring mvc&mybatis搭配使用心得

    请求参数不多时控制器方法使用@RequestParam或@PathVariable接收参数即可. 请求参数过多时使用@RequestParam指定一个map接受参数即可,mybatis查询时可以直接作 ...

  3. Echo团队Alpha冲刺随笔 - 第五天

    项目冲刺情况 进展 前端:布局,内容等方面基本完成. 后端:基本功能基本实现. 计划:准备进行前后端对接,进行测试 问题 有部分代码冗余,需要着手修改 心得 团队分工明确,互相协作,开发进度比预想的要 ...

  4. 新建maven工程问题001

    这周一直在研究SpringMVC+Mybatis,有些心得,记录一下. Ⅰ:建maven遇到的问题. 1.1 新建maven时选中[Create a simple project]这样,后面[Pack ...

  5. Java开发学习心得(二):Mybatis和Url路由

    目录 Java开发学习心得(二):Mybatis和Url路由 1.3 Mybatis 2 URL路由 2.1 @RequestMapping 2.2 @PathVariable 2.3 不同的请求类型 ...

  6. 关于mybatis中mapper.xmlSQL语句书写的心得

    本文主要针对MySQL ---------------------------------------------------------------------------------------- ...

  7. MyBatis使用DEMO及cache的使用心得

    下面是一个简单的MyBatis使用DEMO. 整体结构 整体代码大致如下: POM依赖 需要引用两个jar包,一个是mybatis,另一个是mysql-connector-java,如果是maven工 ...

  8. myBatis xml if、where、if-else?、foreach 心得

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还要注意去掉 ...

  9. 34对MyBatis的博客的整理心得

    对本博客的mybatis重新读一下,做一个整理.如下: 1:为什么会有mybatis,因为原生的jdbc方式有很大问题: (1)数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭 ...

  10. mybatis源码阅读心得

    第一天阅读源码及创建时序图.(第一次用prosson画时序图,挺丑..) 1.  调用 SqlSessionFactoryBuilder 对象的 build(inputStream) 方法: 2.   ...

随机推荐

  1. 2020 OC项目集成flutter

    看了网上基本上都是相同套路,但是到我这就不行了,终于解决了, 主要就是profile文件编写, 1.在oc项目的同级目录项创建flutter模块 就是在oc项目的父级目录下,执行 flutter cr ...

  2. CF546E Soldier and Traveling 题解

    CF546E Soldier and Traveling 英文原题: 当然Luogu有中文翻译 对于这种类型的题目,又是增加,又是减少的,我们可以使用网络流进行转化. 说句废话: 网络流这个东西,趣味 ...

  3. 关于win11没有gpedit.msc(本地组策略管理)的解决方案

    转载自 https://blog.csdn.net/Xingchen0101/article/details/128943201 在本地部署一个bat文件 里面粘贴以下文本 pushd "% ...

  4. MAUI Blazor项目中如何添加一个返回服务,并支持安卓返回键

    前言 MAUI Blazor中,安卓项目的返回键体验很不好,只能如同浏览器一样返回上一页.但很多时候,我们想让他返回的上一页,不一定就是实际上的上一页.而且也想让返回键去支持一些事件,按下返回键触发, ...

  5. Hugging News #0724: Llama 2 登陆 Hugging Face、AI 开源游戏竞赛获奖选手公布!

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  6. vue: 在页面中单独引入elment-ui

    引入资源 首先引入Vue,之后引入element-ui. 引入组件 返回数据 全部代码 <!DOCTYPE html> <html lang="en"> & ...

  7. [Go笔记] 基础-01: Golang发展简史、著名项目及基本使用

    引言 Golang,又称Go语言,是一门开源的静态类型编译型编程语言.自从2007年由谷歌的罗伯特·格里泽默(Robert Griesemer).罗布·派克(Rob Pike)和肯·汤普森(Ken T ...

  8. 无linux基础也能熟练掌握git的基本操作

    git是一个用来管理项目的工具,它的远程仓库有github.gitee.gitlab代码托管中心,既可以用于个人共享代码,又可以用于团队进行项目的协作与发布,那么我们一起来了解一下git该如何使用~ ...

  9. 压测工具sysbench的使用

    前言 sysBench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.sysbench提供如下测试: (1)CPU性能 (2)磁盘IO性能 (3)调度程 ...

  10. 在移动硬盘上安装Win11系统(不使用工具)

    一.准备镜像文件 1.前往官网下载Win11镜像文件. Win11官网:Download Windows 11 (microsoft.com) 2.装载Win11镜像 找到Win11镜像.右键点击装载 ...