天天看点

整合微服务Mybatis plus快速上手增删改查整合微服务Mybatis plus

整合微服务Mybatis plus

Mybatis plus 是Mybatis的升级版,只对Mybatis升级不改变源码,Mybatis能用的他都可以使用,而Mybatis plus最强大之处就是它封装了单表查询。能够使简单的查询更加简单快捷。

1.使用Mybatis plus

1.导入jar包

<dependencies>
    <dependency>
        <!--mybatis-plus 支持-->
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.1.2</version>
    </dependency>
    <!--mysql 驱动包-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
</dependencies>
           

2.配置mysql的配置

spring:
    datasource:
      url: jdbc:mysql://106.14.171.136:3306/chongba_schedule?serverTimezone=GMT%2B8
      driver-class-name: com.mysql.jdbc.Driver
      username: root
      password: root
           

3.创建对应MySQL表的实体类

[email protected]:表示对应的数据库的表。

[email protected](type = IdType.ID_WORKER):

Type值:

​ AUTO 数据库ID自增

​ INPUT 用户输入ID

​ ID_WORKER 全局唯一ID,Long类型的主键 雪花算法,推荐使用

​ ID_WORKER_STR 字符串全局唯一ID

​ UUID 全局唯一ID,UUID类型的主键

​ NONE 该类型为未设置主键类型AUTO 数据库ID自增

​ INPUT 用户输入ID

​ ID_WORKER 全局唯一ID,Long类型的主键 雪花算法,推荐使用

​ ID_WORKER_STR 字符串全局唯一ID

​ UUID 全局唯一ID,UUID类型的主键

​ NONE 该类型为未设置主键类型

**[email protected]:**是绑定表中的列:

​ 如:表中的列为:task_id,

​ 就可以省去@TableFiled(“绑定的值”)

​ 如果不是列为以上面这种格式的话就要在@TableFiled()内添加对应的列名。

package com.chongba.schedule.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;

@Data
@ToString
@NoArgsConstructor

@TableName("taskinfo")
public class TaskInfoEntity implements Serializable {

    private static final long serialVersionUID = -622370561977780508L;
    /**
     * `task_id` bigint(20) NOT NULL COMMENT '任务id',
     * `execute_time` datetime(3) NOT NULL COMMENT '执行时间',
     * `parameters` longblob COMMENT '参数',
     * `priority` int(11) NOT NULL COMMENT '优先级',
     * `task_type` int(11) NOT NULL COMMENT '任务类型',
     */
    @TableId(type = IdType.ID_WORKER)
    private Long taskId; // 任务id

    @TableField
    private Date executeTime; // 执行时间

    @TableField
    private byte[] parameters; // 参数

    @TableField
    private Integer priority; // 优先级

    @TableField
    private Integer taskType; // 任务类型
}
           

4 定义Mapper接口类

package com.chongba.schedule.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chongba.schedule.pojo.TaskInfoEntity;
import org.apache.ibatis.annotations.Select;

public interface TaskInfoMapper extends BaseMapper<TaskInfoEntity> {

    @Select("select * from taskinfo where priority = #{priority}")
    TaskInfoEntity findByPriority(Integer priority);
}

           
  1. 必须继承BaseMapper<> 泛型里面填Pojo的实体类
  2. 由于Mybatis plus是没有改变Mybatis的源码的,只是强,所以也是可以用@Select注解和Xml的形式对数据库进行CRUD的。

5.启动类上的注解

​ 由于是SpringBoot集成Mybatis plus所以必须在启动类上添加**@MapperScan注解,注解内容是你的Mapper接口的包的全路径名。例如:@MapperScan(“com.chongba.schedule.mapper”)**

这样就可以对单边进行快速的CRUD了。

@Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }
@Bean
public PaginationInterceptor paginationInterceptor(){
    return new PaginationInterceptor();
}
           

在启动类中加入这两个@Bean,第一个是实现乐观锁的,当你的实体类上有属性绑定@Version这个注解时就相当于是加了乐观锁,所以必须加上第一个注解后就会实现乐观锁。

@Version
public int version
           

第二个@Bean是实现分页查询时所需要的注解

6.Mybatis plus CRUD快速入门

1.单表添加

方法:insert()

@Autowired
TaskInfoMapper taskInfoMapper;
@Test
public void insert(){
    TaskInfoEntity taskInfoEntity = new TaskInfoEntity();
        taskInfoEntity.setExecuteTime(new Date());
        taskInfoEntity.setParameters("保存".getBytes());
        taskInfoEntity.setPriority(22);
        taskInfoEntity.setTaskType(1002);
        taskInfoMapper.insert(taskInfoEntity);
}
           

2.单表删除

//根据id删除数据
        taskInfoMapper.deleteById(1);
        //根据map中的信息删除表中的信息
        Map<String,Object> map = new HashMap<>();
        map.put("taskType",1002);
        map.put("taskId",1);
        taskInfoMapper.deleteByMap(map);
        taskInfoMapper.delete(new QueryWrapper<TaskInfoEntity>().eq("g",1));
        // 批量根据Id删除
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        taskInfoMapper.deleteBatchIds(list);
           

3.单表修改

//填写要修改的表的属性
    taskInfoMapper.updateById(taskInfoEntity);

           

4.单表查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IgzjbU5N-1588862032647)(C:\Users\臭屁周\AppData\Roaming\Typora\typora-user-images\1588861915834.png)]

d(“3”);

taskInfoMapper.deleteBatchIds(list);

#### 3.单表修改

```java
 	//填写要修改的表的属性
    taskInfoMapper.updateById(taskInfoEntity);

           

4.单表查询

整合微服务Mybatis plus快速上手增删改查整合微服务Mybatis plus