基于SpringBoot2开发WebApi(二)使用MyBatis连接MySQL数据库

1.依赖

在pom.xml中引入依赖

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

2.druid使用

在项目中我们引入了druid用来管理连接数据库的线程池,在pom.xml中引入druid依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>

关于druid还可以进行程序对数据库监控的目的,输入服务地址:http://localhost:8084/druid/datasource.html

3.配置文件

因为我这边为了方便的区分开发环境与测试环境,所以在创建了线上与线下的两个不同的配置文件

分别为:

application-dev.yml(开发环境配置)

application-prod.yml(生产环境配置)

然后在application.yml中方便的进行开发环境与生产环境的切换

开发环境配置

server:
  port: 8084

sim:
  config:
    #定时5分钟同步中移动接口数据
    sync300Interval: 300000
    #定时1天同步中移动接口数据
    sync86400Interval: 86400000

spring:
  datasource:
    name: mysql_sim
    type: com.alibaba.druid.pool.DruidDataSource
    #druid相关配置
    druid:
      #监控统计拦截的filters
      filters: stat
      driver-class-name: com.mysql.cj.jdbc.Driver
      #基本属性
      url: jdbc:mysql://192.168.1.39:3306/simmanager?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
      username: xxx
      password: 123456
      #配置初始化大小/最小/最大
      initial-size: 1
      min-idle: 1
      max-active: 20
      #获取连接等待超时时间
      max-wait: 60000
      #间隔多久进行一次检测,检测需要关闭的空闲连接
      time-between-eviction-runs-millis: 60000
      #一个连接在池中最小生存的时间
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
      pool-prepared-statements: false
      max-pool-prepared-statement-per-connection-size: 20
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.iot.sim.model

#MyBatis分页查询插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

以上准备工作完成后,后续我们开始编码实施

4.编码实施

首先在启动类里面增加注解@MapperScan("com.iot.simmanager.dao")

作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类

写个获取公司信息的实现示例

model包下增加AdminAgent类

package com.iot.simmanager.model;

import lombok.Data;

import java.io.Serializable;
import java.math.BigInteger;

/**
 * @author lenny
 */
@Data
public class AdminAgent implements Serializable {
    private BigInteger Id;
    private String AgentName;
    private String AgentCode;
    private String Address;
    private String Bank;
    private String BankNo;
    private String Contacts;
    private String Phone;
    private String Email;
    private String Fax;
    private String PostCode;
    private String AgentGUID;
    private String Describe;
    private String CreateTime;
    private BigInteger Creator;
}

这里用到了@Data注解,需要在pom.xml下进行依赖引入

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

dao包下增加AdminAgentDao接口

package com.iot.simmanager.dao;

import com.iot.simmanager.model.AdminAgent;

import java.util.List;

/**
 * @author lenny
 */
public interface AdminAgentDao {
    /**
     * 查询公司列表
     * @return
     */
    List<AdminAgent> queryAdminAgentList();
}

service包下增加AdminAgentService

package com.iot.simmanager.service;

import com.iot.simmanager.dao.AdminAgentDao;
import com.iot.simmanager.model.AdminAgent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author lenny
 */
@Service
public class AdminAgentService {
    @Autowired
    private AdminAgentDao adminAgentDao;

    /**
     * 查询公司列表
     * @return
     */
    public List<AdminAgent> queryAdminAgentList()
    {
        List<AdminAgent> adminAgentList=adminAgentDao.queryAdminAgentList();
        return adminAgentList;
    }
}

最后再controller包增加AdminAgentController

package com.iot.simmanager.controller;

import com.iot.simmanager.model.AdminAgent;
import com.iot.simmanager.service.AdminAgentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author lenny
 */
@RestController
@RequestMapping("/agent")
public class AdminAgentController {
    @Autowired
    private AdminAgentService adminAgentService;

    @PostMapping(value = "queryAdminAgentList")
    public List<AdminAgent> queryAdminAgentList(){
        try {
            List<AdminAgent> adminAgentList = adminAgentService.queryAdminAgentList();
            return adminAgentList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

使用Postman进行接口测试

 

Guess you like

Origin blog.csdn.net/qq_17486399/article/details/117074465