上篇文章传送门:【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