SpringBoot+MyBatisPlus+Druid从单数据源到多数据源动态切换1-单数据源

SpringBoot+MyBatisPlus+Druid从单数据源到多数据源动态切换1-单数据源,第1张

系列文章

1. SpringBoot+MyBatisPlus+Druid从单数据源到多数据源动态切换1-单数据源

2. SpringBoot+MyBatisPlus+Druid从单数据源到多数据源动态切换2-基于AbstractRoutingDataSource实现多数据源


文章目录

系列文章

文章目录

一、MyBatisPlus是什么?

1.简介

2.引入依赖

 3. 在application.yml中添加配置

4.使用

二、Druid是什么

1.简介

2.引入依赖

 3. 在application.yml中添加配置(单数据源)

 三、启动测试

1.项目端口上下文路径配置

2.启动类

3.启动项目,使用测试工具insomnia访问接口


一、MyBatisPlus是什么 1.简介

MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2.引入依赖


    com.baomidou
    mybatis-plus-boot-starter
    ${mybatis-plus-boot-starter.version}
 3. 在application.yml中添加配置
mybatis-plus:
  #MyBatis Mapper 所对应的 XML 文件位置,Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)
  mapper-locations: classpath:mapper/**/*Mapper.xml
  configuration:
    #在控制台打印SQL日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      field-strategy: NOT_NULL
      id-type: auto #全局默认主键类型,设置后,即可省略实体对象中的@TableId(type = IdType.AUTO)配置
      db-type: mysql
    banner: false #是否控制台 print mybatis-plus 的 LOGO
4.使用

entity:

@Data
@Accessors(chain = true)
@TableName("tb_user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @TableField("name")
    private String name;

    @TableField("age")
    private Integer age;
    
}

mapper:继承com.baomidou.mybatisplus.core.mapper.BaseMapper

@Mapper
public interface UserMapper extends BaseMapper {

}




    
    
        
        
        
    

    
    
        id, name, age
    

service:继承com.baomidou.mybatisplus.extension.service.IService

public interface UserService extends IService {

}

 serviceImpl:继承com.baomidou.mybatisplus.extension.service.impl.ServiceImpl

@Service
public class UserServiceImpl extends ServiceImpl implements UserService {

}

controller:

@RestController
@RequestMapping("/user")
public class UserController extends BaseController{
    @Autowired
    private UserService userService;

    @GetMapping("/list")
    public TableDataInfo list(){
        List list = userService.list();
        return getDataTable(list);
    }

}

BaseController:自定义Controller基类,提供一些响应封装方法

public class BaseController
{
    protected final Logger logger = LoggerFactory.getLogger(this.getClass());



    /**
     * 响应请求分页数据
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    protected TableDataInfo getDataTable(List list)
    {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(HttpStatus.SUCCESS);
        rspData.setMsg("查询成功");
        rspData.setRows(list);
        rspData.setTotal(new PageInfo(list).getTotal());
        return rspData;
    }

    /**
     * 返回成功
     */
    public AjaxResult success()
    {
        return AjaxResult.success();
    }

    /**
     * 返回失败消息
     */
    public AjaxResult error()
    {
        return AjaxResult.error();
    }

    /**
     * 返回成功消息
     */
    public AjaxResult success(String message)
    {
        return AjaxResult.success(message);
    }

    /**
     * 返回失败消息
     */
    public AjaxResult error(String message)
    {
        return AjaxResult.error(message);
    }

    /**
     * 响应返回结果
     * 
     * @param rows 影响行数
     * @return  *** 作结果
     */
    protected AjaxResult toAjax(int rows)
    {
        return rows > 0 ? AjaxResult.success() : AjaxResult.error();
    }

    /**
     * 响应返回结果
     * 
     * @param result 结果
     * @return  *** 作结果
     */
    protected AjaxResult toAjax(boolean result)
    {
        return result ? success() : error();
    }

}

二、Druid是什么 1.简介

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

2.引入依赖


    com.alibaba
    druid-spring-boot-starter
    ${druid.version}
 3. 在application.yml中添加配置(单数据源)
# 单数据源配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/db-master?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: root
    druid:
      # 初始连接数
      initialSize: 5
      # 最小连接池数量
      minIdle: 10
      # 最大连接池数量
      maxActive: 20
      # 配置获取连接等待超时的时间
      maxWait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      # 配置一个连接在池中最大生存的时间,单位是毫秒
      maxEvictableIdleTimeMillis: 900000
      # 配置检测连接是否有效
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 用于采集web-jdbc关联监控的数据
      webStatFilter:
        enabled: true
      # 用于展示Druid的统计信息(提供监控信息展示的html页面+提供监控信息的JSON Api)
      statViewServlet:
        enabled: true
        # 设置ip白名单(逗号隔开),不填则允许所有访问
        allow:
        # ip黑名单(优先于allow)
        deny:
        # 监控页面的url
        url-pattern: /druid/*
        # 控制台管理用户名和密码
        login-username: ruoyi
        login-password: 123456
      filter:
        # 用于统计监控信息
        stat:
          enabled: true
          # 慢SQL记录
          log-slow-sql: true
          # 慢sql标准,单位毫秒
          slow-sql-millis: 1000
          # 合并sql
          merge-sql: true
        wall:
          config:
            # 是否允许一次执行多条语句,默认关闭
            multi-statement-allow: true
 三、启动测试 1.项目端口上下文路径配置
server:
  port: 9999
  servlet:
    context-path: /single-datasource-demo
2.启动类
@SpringBootApplication
public class SingleDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SingleDemoApplication.class, args);
    }
}
3.启动项目,使用测试工具insomnia访问接口

 控制台打印出sql语句:


 数据库连接访问成功,接口测试成功。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/874883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存