【springCloud搭建】五、集成mybatis-plus

本文介绍了如何在SpringCloud应用中集成Mybatis Plus,包括添加相关依赖、配置数据源、模型映射、Mapper和Service的创建,以及如何使用自定义SQL。同时,详细讲解了如何配置Druid数据监控和处理XML映射文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章传送门:【springCloud搭建】四、集成ribbon+hystrix+feign

将mybatis-plus所需第三方包加入cloud_demo的pom.xml内

<mybatis-plus.version>3.3.1</mybatis-plus.version>
<mysql-connector-java.version>8.0.11</mysql-connector-java.version>
<druid-spring-boot-starter.version>1.1.10</druid-spring-boot-starter.version>

<!-- mybatis Plus 插件-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-extension</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>
<!--mysql连接驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql-connector-java.version}</version>
</dependency>
<!--druid数据监控-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid-spring-boot-starter.version}</version>
</dependency>

如果想使用xml写语句的话可以在resources文件夹内加mapper文件夹xml文件可以放在这个里面

添加mysql数据源

spring:
  datasource:
    name: test
    url: jdbc:mysql://127.0.0.1:3306/diary?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: root
    # 使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    filters: stat,wall,log4j
    #最大链接数
    maxActive: 20
    #初始化链接数
    initialSize: 1
    #最大等候时间
    maxWait: 60000
    #最小链接数
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

添加mybatisPlus配置

mybatis-plus:
  #指定需要扫描的枚举包,当枚举实现了mybatisPlus的IEnum枚举接口时,通过枚举构建sql语句时会自动获取枚举的Value
  typeEnumsPackage: org.wcy.enums
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
  global-config:
    db-config:
      #当类没有指定@TableName注解时会自动通过类目转换成表明并加上t_同理通过表名创建类时也可以忽略t_,ps:表 t_test  类Test
      table-prefix: t_

创建枚举类, 需要实现 mybatisPlus的 IEnum<Integer> 泛型就是你的value的类型

import com.baomidou.mybatisplus.core.enums.IEnum;

    enum Sex implements IEnum<Integer> {
        CONCEAL(0, "隐藏"),
        MAN(1, "男"),
        WOMAN(2, "女");
        private final int value;
        private final String desc;
        Sex (int value, String desc) {
            this.value = value;
            this.desc = desc;
        }
        @Override
        public Integer getValue() {
            return this.value;
        }
    }

创建model (官网地址:https://mp.baomidou.com/guide/annotation.html#tablename)

package org.wcy.model;

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 com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.wcy.enums.TestEnums;

@Data
//@TableName("t_test") //这个注解可以自己指定表名
@TableName(keepGlobalPrefix = true) //因为我们在yml添加了全球前缀t_,所以只要开启使用配置的前缀(keepGlobalPrefix=true)只要创建的类名和去掉t_后的表名一致mybatisPlus就会自动转换
//继承Model后,可以通过表的实体类直接调用mybatisPlus封装好的CRUD方法
public class Test extends Model<Test> {

    //主键注解 IdType.INPUT为自己指定id的值
    @TableId(type = IdType.INPUT)
    //添加这个可以避免long传给前端后失真的问题
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    //性别
    @TableField("sex") //当属性名和字段名不一致时可以指定字段的名称
    private TestEnums.Sex accGender;

    //姓名
    //@TableField("user_name") //当属性名和字段名一致时可以忽略@TableField, mybatisPlus会自动转换驼峰和下划线
    private String UserName;

    @TableField(exist = false) //当属性不存在表字段里时可以配置 exist=false 来忽略这个属性, 否则执行语句时会报字段不存在的异常
    private Integer age;

}

继承Model后,可以通过表的实体类直接调用mybatisPlus封装好的CRUD方法

 

创建Mapper

继承BaseMapper后就可以使用mybatisPlus封装好的 Mapper层的 CRUD方法,泛型就是表对象

package org.wcy.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.wcy.model.Test;

public interface TestMapper extends BaseMapper<Test> {
}

创建Service

继承IService后就可以使用mybatisPlus封装好的 servie层的 CRUD方法,泛型就是表对象

package org.wcy.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.wcy.model.Test;

public interface TestService extends IService<Test> {


}

创建Service实现类

继承ServiceImpl<TestMapper, Test>是为了实现接口层继承的IService的方法,第一个泛型是mapper层的接口类,通过调用super.getBaseMapper()可以很方便的获取到mapper层接口类的对象,第二个泛型是表对象是为了约束mybatisPlus构造sql和返回的对象类型

package org.wcy.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.wcy.mapper.TestMapper;
import org.wcy.model.Test;
import org.wcy.service.TestService;

@Service
public class TestServiceImpl extends ServiceImpl<TestMapper, Test> implements TestService {


}

自定义语句

    @Select("select id,user_name from t_test ${ew.customSqlSegment}")
    @ResultType(Test.class)
    List<Test> queryFriend(@Param(Constants.WRAPPER) Wrapper<Test> queryWrapper);

下篇文章传送门:【springCloud搭建】六、集成RabbitMQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值