码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA框架(SSM):MyBatisPlus

时间:2021-04-30 12:18:44      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:框架   tar   id生成策略   集合   批量   input   bat   增强   his   

MyBatisPlus

目的:对mybatis进行增强,不进行改变

简单Demo编写

  1. 创建数据库并插入资料

  2. 创建springboot工程

  3. 引入相关依赖和npm

  4. 安装lombox等插件

  5. 设置application.properties

  6. 编写代码

    • 新建entity实体

    • 新建mapper,继承BaseMapper<实体类>

    • 启动类添加@MapperScan(mapper包全名),也可以添加到Config类

      @EnableTransactionManagement
      @Configuration
      @MapperScan(mapper包全名)
      public class MybatisPlusConfig{  
      }
      
  7. 编写测试代码

1.1 CURD操作

配置中添加mybatis日志

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
1.1.1 增操作

简单Demo

XXXMapper.insert(实体对象);

特点

  • 不需要设置ID值(主键)

ID生成策略

  1. ID生成策略类别
  • AUTO INCREMENT: 自动增长策略

  • 缺点:每次需要获取最近一次的ID

  • UUID: 每次生成随机唯一值

  • 缺点:排序困难

  • Redis生成ID

  • Twitter的snowflake算法(Mapper默认)

  1. 配置ID生成策略样例
@TableId(type = IdType.AUTO)
private Long Id;
  • 配置ID生成策略类别
    • AUTO:自动增长
    • ID WORER:mp自带,生成19位值,数字类型使用,比如long类型
    • ID WORKER STR:mp自带,生成19位值,字符串类型使用
    • INPUT:自身输入
    • NONE:没有策略,自身输入
    • UUID:随机唯一值
1.1.2 删操作

简单操作

//物理删除
xxxMapper.deleteById(Id);//单个删除
xxxMapper.deleteBatchIds(Id);//批量删除

逻辑删除

  1. 添加逻辑删除字段,对应实体类添加属性,属性添加注解

    @TableLogic
    private Integer deleted;
    
  2. 配置逻辑删除插件到Config类

    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }
    
  3. 在配置文件中设定

    mybatis-plus.global-config.db-config.logic-delete-value=1 //删除时设置为0
    mybatis-plus.global-config.db-config.logic-not-delete-value=0 //非删除时设置为1
    
1.1.3 查操作

简单样例

XXXMapper.selectAll(null);//查询所有资料
XXXMapper.selectById(id);//通过单个ID查询
XXXMapper.selectBatchIds(idList);//通过多个ID查询

分页查询

  1. 配置分页插件到Config类

    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
    
  2. 编写分页查询代码

    • 直接new page对象,传入当前页每页显示记录数
    • 调用mp方法实现分页
    Page<实体> page = new Page<>(当前页,每页记录数);
    xxxMapper.selectPage(page,null);
    page.getCurrent();//当前页
    page.getRecords();//每页数据list集合
    page.getSize();//每页显示记录数
    page.getTotal();//总记录数
    page.getPages();//总页数
    page.hasNext();//是否有下一页
    page.hasPrevious();//是否有上一页
    
  3. 复杂条件查询

    使用QueryWrapper

    //创建QueryWrapper对象
    QueryWrapper<实体> wrapper = new QueryWrapper();
    //ge,gt,le,lt(>=,>,<=,<)
    //查询age>=30记录
    //第一个参数名称,第二个设置值
    wrapper.ge("age",30);
    //eq,ne(=,!=)
    //between
    //查询年龄20-30
    wrapper.between("age",20,30);
    //like 模糊查询
    //orderByDesc/Asc 排序
    //last 拼接sql语句
    wrapper.last("limit 1");
    //指定查询的列(id,name)
    wrapper.select("id","name");
    
1.1.4 改操作

简单样例

XXXMapper.updateById(实体对象);

自动填充

  1. 在需要自动填充的属性上加注解

    • 样例

      @TableField(fill=FieldFill.INSERT)
      private Date createTime;
      
      @TableField(fill=FieldFill.INSERT_UPDATE)
      private Date updateTime;
      
  2. 新建Hander类继承MetaObjectHandler

    • 需添加@Component注解交由springboot控管

    • 样例

      @Overrid
      public void insertFill(MetaObject metaObject){
      	this.setFieldValByName("createTime",new Date(),metaObject);//将该属性填充为当前时间
          this.setFieldValByName("updateTime",new Date(),metaObject);//将该属性填充为当前时间
      }
      

1.2 加锁

目的

解决丢失更新问题

悲观锁:串行

乐观锁:使用版本号确定能否进行更改操作

乐观锁具体实现

  1. 表添加字段,作为乐观锁版本号

  2. 对应实体类添加版本号属性

  3. 在实体类版本号属性添加注解@Version

  4. 配置乐观锁插件到Config类

    @Bean
    public OptimisticLockerInterceptor optimistickLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }
    

1.3 性能分析插件

配置插件到Config类

 /**
 * SQL执行效率插件
 * @return
 */
 @Bean
 @Profile({"dev"}) // 指定环境为dev生效
 public PerformanceInterceptor performanceInterceptor() {
        PerformanceInterceptor interceptor = new PerformanceInterceptor();
		// sql美化打印
        interceptor.setFormat(true);
		// 设置SQL超时时间5s
        interceptor.setMaxTime(5000L);
 		return interceptor;
 }

JAVA框架(SSM):MyBatisPlus

标签:框架   tar   id生成策略   集合   批量   input   bat   增强   his   

原文地址:https://www.cnblogs.com/HymanWesteros/p/14719306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!