整合MyBatis-Plus
创始人
2024-05-30 06:43:52
0

整合MyBatis-Plus

  • 1、依赖
  • 2、配置文件
  • 3、启动类
  • 4、实体类
  • 5、Mapper
  • 6、主键策略
    • 6.1、ID_WORKER
    • 6.2、自增策略
    • 6.3、CURD测试
  • 7、条件构造器
  • 8、MyBatis-Plus封装service层
    • 8.1、添加service接口
    • 8.2、添加service接口实现
    • 8.3、测试service接口
  • 9、分页插件
    • 9.1、配置分页插件
    • 9.2、分页controller
    • 9.3、配置日期时间格式

1、依赖

com.baomidoumybatis-plus-boot-starter3.4.1

2、配置文件

配置 MySQL 数据库的相关配置及Mybatis-Plus日志

application.yml

spring:application:name: service-oaprofiles:active: dev

application-dev.yml

server:port: 8800
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志global-config:db-config:logic-delete-value: 1logic-not-delete-value: 0
spring:datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/guigu-oa?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8username: rootpassword: 12345

3、启动类

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹

package com.atguigu;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@ComponentScan("com.atguigu")
@MapperScan("com.atguigu.*.mapper")
public class ServiceAuthApplication {public static void main(String[] args) {SpringApplication.run(ServiceAuthApplication.class, args);}}

4、实体类

package com.atguigu.model.system;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.atguigu.model.base.BaseEntity;
import lombok.Data;@Data
@TableName("sys_role")
public class SysRole extends BaseEntity {private static final long serialVersionUID = 1L;//角色名称@TableField("role_name")private String roleName;//角色编码@TableField("role_code")private String roleCode;//描述@TableField("description")private String description;}

5、Mapper

com.baomidou.mybatisplus.core.mapper.BaseMapper这是Mybatis-Plus提供的默认Mapper接口

package com.atguigu.auth.mapper;import com.atguigu.model.auth.SysRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface SysRoleMapper extends BaseMapper {}

6、主键策略

6.1、ID_WORKER

MyBatis-Plus默认的主键策略是:ID_WORKER 全局唯一ID

6.2、自增策略

要想主键自增需要配置如下主键策略

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

其它主键策略:分析 IdType 源码可知

public enum IdType {/*** 数据库ID自增*/AUTO(0),/*** 该类型为未设置主键类型*/NONE(1),/*** 用户输入ID* 该类型可以通过自己注册自动填充插件进行填充*/    INPUT(2),/*** 全局唯一ID*/    ASSIGN_ID(3),/*** 全局唯一ID (UUID)*/ASSIGN_UUID(4),/** @deprecated */@DeprecatedID_WORKER(3),/** @deprecated */@DeprecatedID_WORKER_STR(3),/** @deprecated */@DeprecatedUUID(4);private final int key;private IdType(int key) {this.key = key;}public int getKey() {return this.key;}
}

6.3、CURD测试

int result = sysRoleMapper.insert(sysRole);
System.out.println(result); //影响的行数
System.out.println(sysRole); //id自动回填int result = sysRoleMapper.updateById(sysRole);
System.out.println(result);/*** application-dev.yml 加入配置* 此为默认值,如果你的默认值和mp默认的一样,则不需要该配置* mybatis-plus:*   global-config:*     db-config:*       logic-delete-value: 1*       logic-not-delete-value: 0*/
int result = sysRoleMapper.deleteById(2L);
System.out.println(result);int result = sysRoleMapper.deleteBatchIds(Arrays.asList(1, 1));
System.out.println(result);

7、条件构造器

LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysRole::getRoleCode, "role");
List users = sysRoleMapper.selectList(queryWrapper);
System.out.println(users);

8、MyBatis-Plus封装service层

8.1、添加service接口

com.baomidou.mybatisplus.extension.service.IService这是Mybatis-Plus提供的默认Service接口

package com.atguigu.auth.service;import com.atguigu.model.auth.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;import java.util.List;public interface SysRoleService extends IService {}

8.2、添加service接口实现

com.baomidou.mybatisplus.extension.service.impl.ServiceImpl这是Mybatis-Plus提供的默认Service接口实现

package com.atguigu.auth.service.impl;import com.atguigu.auth.mapper.SysRoleMapper;
import com.atguigu.auth.service.SysRoleService;
import com.atguigu.model.auth.SysRole;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService {}

8.3、测试service接口

//UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper
//所以不填写就是无任何条件
List users = sysRoleService.list();
users.forEach(System.out::println);boolean result = sysRoleService.save(sysRole);
System.out.println(result); //影响的行数
System.out.println(sysRole); //id自动回填boolean result = sysRoleService.updateById(sysRole);
System.out.println(result);boolean result = sysRoleService.removeById(2L);
System.out.println(result);LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(SysRole::getRoleCode, "role");
List users = sysRoleService.list(queryWrapper);
System.out.println(users);

9、分页插件

9.1、配置分页插件

我们将@MapperScan(“com.atguigu.auth.mapper”)提取到该配置类上面,统一管理,启动类和yaml配置文件就不需要了

package com.atguigu.common.config.mp;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.atguigu.auth.mapper")
public class MybatisPlusConfig {/*** 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}@Beanpublic ConfigurationCustomizer configurationCustomizer() {return configuration -> configuration.setUseDeprecatedExecutor(false);}
}

9.2、分页controller

//条件分页查询
//page 当前页  limit 每页显示记录数
//SysRoleQueryVo 条件对象
@ApiOperation("条件分页查询")
@GetMapping("{page}/{limit}")
public Result pageQueryRole(@PathVariable Long page,@PathVariable Long limit,SysRoleQueryVo sysRoleQueryVo) {//调用service的方法实现//1 创建Page对象,传递分页相关参数//page 当前页  limit 每页显示记录数Page pageParam = new Page<>(page,limit);//2 封装条件,判断条件是否为空,不为空进行封装LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();String roleName = sysRoleQueryVo.getRoleName();if(!StringUtils.isEmpty(roleName)) {//封装 like模糊查询wrapper.like(SysRole::getRoleName,roleName);}//3 调用方法实现IPage pageModel = sysRoleService.page(pageParam, wrapper);return Result.ok(pageModel);
}

9.3、配置日期时间格式

  jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8

相关内容

热门资讯

韩国执政党更换总统大选候选人 转自:财联社【韩国执政党更换总统大选候选人】财联社5月10日电,由于韩国执政党国民力量党总统候选人金...
前4个月我国货物贸易进出口总值... 转自:证券日报    本报记者 韩昱    5月9日,今年前4个月外贸进出口成绩单出炉。据海关总署发...
马云现身阿里总部! 5月10日是第21个“阿里日”。5月9日晚,马云现身阿里总部湖畔小屋,现场鼓励员工坚持创业精神。湖畔...
工行回应“两款售出金条疑似有杂... 澎湃新闻记者 胡志挺工商银行对网传一客户在该行购买金条发现疑似杂质相关情况作出正式回应。5月9日晚间...
靠美国关税撑起不锈钢30%的增...  5月 27-28日,天津东凯悦酒店,2025 (第九届) 不锈钢产业发展大会 将在渤海之滨隆重召开...
韩德洙成为韩国执政党总统大选候... 转自:北京日报客户端△韩德洙(资料图)由于韩国执政党国民力量党总统候选人金文洙和无党派总统候选人、前...
社评:这几份联合声明有超越双边... 来源:环球时报 当地时间5月9日,国家主席习近平和来自世界20多个国家及国际组织领导人应邀出席在莫斯...
国务院国资委:提升央企基础大模... 转自:证券日报    本报讯 (记者杜雨萌)国务院国资委5月9日发布消息称,5月7日,国务院国资委党...
滇池度假区国投置业公司“骄傲”... 近日,在昆明斗南花拍中心举办的“2025年第一期花卉品质评比赛”中,度假区国投置业有限公司大湾项目精...
券商聚焦医药领域 持仓、调研多...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 在金融投资领域,医药...
产业转移看四川丨英发控股总裁张... 转自:四川在线四川在线记者 王若晔 摄影 韦维5月9日,2025中国产业转移发展对接活动(四川)新能...
央行:实施好适度宽松的货币政策... 转自:证券日报    本报讯 (记者韩昱)5月9日,中国人民银行发布2025年第一季度中国货币政策执...
美国麻疹病例增至1001例 转自:财联社【美国麻疹病例增至1001例】财联社5月10日电,根据美国疾病控制与预防中心(CDC)发...
五月的捞渔河,绣球花海也太好拍... 五月的昆明,阳光和煦,风也温柔。滇池畔的捞渔河国家湿地公园正被20余亩绣球花海染成一片流动的油画,1...
中国中铁全资子公司新增一项17... (转自:快查一企业中标了)快查APP显示,中国中铁相关公司中铁隧道局集团有限公司于2025年5月9日...
美联储官员Bostic:在前路...   亚特兰大联邦储备银行行长Raphael Bostic表示,鉴于贸易政策的不确定性和日益逼近的经济...
我国专家首获公共信息导向系统领...   本报讯(记者 何可)近日,中国标准化研究院(以下简称“标准院”)基础标准化研究所研究员邹传瑜、陈...
同课异构展风采 双向奔赴助衔接 转自:新安晚报   为全面推进幼儿园和小学科学衔接,创新幼小衔接教研模式,进一步巩固幼小联合教研共同...
安徽建工相关公司新增一项320... (转自:快查一企业中标了)快查APP显示,安徽建工相关公司合肥高新城市发展集团有限公司于2025年5...
14岁女孩瞒年龄文身,店家赔了...   14岁女生谎称18岁,签订合同自愿文身,家长发现后花了近6万元清洗文身但效果不佳,将店铺起诉到法...