增加 spring-boot + druid + mybatis 整合用例
This commit is contained in:
		@@ -0,0 +1,14 @@
 | 
			
		||||
package com.heibaiying.springboot;
 | 
			
		||||
 | 
			
		||||
import org.springframework.boot.SpringApplication;
 | 
			
		||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
			
		||||
 | 
			
		||||
@SpringBootApplication
 | 
			
		||||
public class SpringBootDruidMybatisApplication {
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        SpringApplication.run(SpringBootDruidMybatisApplication.class, args);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,38 @@
 | 
			
		||||
package com.heibaiying.springboot.bean;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
import lombok.ToString;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author : heibaiying
 | 
			
		||||
 * @description : 实体类
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@ToString
 | 
			
		||||
public class Programmer {
 | 
			
		||||
 | 
			
		||||
    private int id;
 | 
			
		||||
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    private int age;
 | 
			
		||||
 | 
			
		||||
    private float salary;
 | 
			
		||||
 | 
			
		||||
    private Date birthday;
 | 
			
		||||
 | 
			
		||||
    public Programmer(String name, int age, float salary, Date birthday) {
 | 
			
		||||
        this.name = name;
 | 
			
		||||
        this.age = age;
 | 
			
		||||
        this.salary = salary;
 | 
			
		||||
        this.birthday = birthday;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,21 @@
 | 
			
		||||
package com.heibaiying.springboot.controller;
 | 
			
		||||
 | 
			
		||||
import com.alibaba.druid.stat.DruidStatManagerFacade;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author : heibaiying
 | 
			
		||||
 * @description :在 Spring Boot 中可以通过 HTTP 接口将 Druid 监控数据以JSON 的形式暴露出去,
 | 
			
		||||
 * 实际使用中你可以根据你的需要自由地对监控数据、暴露方式进行扩展。
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
public class DruidStatController {
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/stat")
 | 
			
		||||
    public Object druidStat() {
 | 
			
		||||
        // DruidStatManagerFacade#getDataSourceStatDataList 该方法可以获取所有数据源的监控数据
 | 
			
		||||
        return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
package com.heibaiying.springboot.controller;
 | 
			
		||||
 | 
			
		||||
import com.alibaba.druid.stat.DruidStatManagerFacade;
 | 
			
		||||
import com.heibaiying.springboot.bean.Programmer;
 | 
			
		||||
import com.heibaiying.springboot.dao.ProgrammerDao;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author : heibaiying
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
public class ProgrammerController {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ProgrammerDao programmerDao;
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/programmers")
 | 
			
		||||
    public List<Programmer> get() {
 | 
			
		||||
        return programmerDao.selectAll();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,29 @@
 | 
			
		||||
package com.heibaiying.springboot.dao;
 | 
			
		||||
 | 
			
		||||
import com.heibaiying.springboot.bean.Programmer;
 | 
			
		||||
import org.apache.ibatis.annotations.*;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author : heibaiying
 | 
			
		||||
 */
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface ProgrammerDao {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Select("select * from programmer")
 | 
			
		||||
    List<Programmer> selectAll();
 | 
			
		||||
 | 
			
		||||
    @Insert("insert into programmer (name, age, salary, birthday) VALUES (#{name}, #{age}, #{salary}, #{birthday})")
 | 
			
		||||
    void save(Programmer programmer);
 | 
			
		||||
 | 
			
		||||
    @Select("select * from programmer where name = #{id}")
 | 
			
		||||
    Programmer selectById(int id);
 | 
			
		||||
 | 
			
		||||
    @Update("update programmer set name=#{name},age=#{age},salary=#{salary},birthday=#{birthday} where id=#{id}")
 | 
			
		||||
    int modify(Programmer programmer);
 | 
			
		||||
 | 
			
		||||
    @Delete(" delete from programmer where id = #{id}")
 | 
			
		||||
    void delete(int id);
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,71 @@
 | 
			
		||||
spring:
 | 
			
		||||
  datasource:
 | 
			
		||||
    url: jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=utf-8
 | 
			
		||||
    username: root
 | 
			
		||||
    password: root
 | 
			
		||||
    driver-class-name: com.mysql.cj.jdbc.Driver
 | 
			
		||||
 | 
			
		||||
    # ʹ<><CAB9> druid <20><>Ϊ<EFBFBD><CEAA><EFBFBD>ӳ<EFBFBD>  <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>Բμ<D4B2> druid starter <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
 | 
			
		||||
    type: com.alibaba.druid.pool.DruidDataSource
 | 
			
		||||
    druid:
 | 
			
		||||
      # <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĸ<D3B5><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>init<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>һ<EFBFBD><D2BB>getConnectionʱ
 | 
			
		||||
      initialSize: 5
 | 
			
		||||
      # <20><>С<EFBFBD><D0A1><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
      minIdle: 5
 | 
			
		||||
      # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
      maxActive: 10
 | 
			
		||||
      # <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC>λ<EFBFBD><CEBB><EFBFBD>롣<EFBFBD><EBA1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>maxWait֮<74><D6AE><EFBFBD><EFBFBD>ȱʡ<C8B1><CAA1><EFBFBD>ù<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʻ<EFBFBD><CABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>useUnfairLock<63><6B><EFBFBD><EFBFBD>Ϊtrueʹ<65>÷ǹ<C3B7>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
 | 
			
		||||
      maxWait: 60000
 | 
			
		||||
      # Destroy<6F>̻߳<DFB3><CCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵļ<D3B5><C4BC><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>minEvictableIdleTimeMillis<69><73><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>
 | 
			
		||||
      timeBetweenEvictionRunsMillis: 60000
 | 
			
		||||
      # <20><><EFBFBD>ӱ<EFBFBD><D3B1>ֿ<EFBFBD><D6BF>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1>
 | 
			
		||||
      minEvictableIdleTimeMillis: 300000
 | 
			
		||||
      # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>sql <20><><EFBFBD><EFBFBD><EFBFBD>ݿⷽ<DDBF>Զ<EFBFBD><D4B6><EFBFBD>, <20><><EFBFBD><EFBFBD> oracle Ӧ<><D3A6>д<EFBFBD><D0B4> SELECT 1 FROM DUAL
 | 
			
		||||
      validationQuery: SELECT 1
 | 
			
		||||
      # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊtrue<75><65><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ұ<EFBFBD>֤<EFBFBD><D6A4>ȫ<EFBFBD>ԡ<EFBFBD><D4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>timeBetweenEvictionRunsMillis<69><73>ִ<EFBFBD><D6B4>validationQuery<72><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>
 | 
			
		||||
      testWhileIdle: true
 | 
			
		||||
      # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱִ<CAB1><D6B4>validationQuery<72><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ûή<C3BB><E1BDB5><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
 | 
			
		||||
      testOnBorrow: false
 | 
			
		||||
      # <20>黹<EFBFBD><E9BBB9><EFBFBD><EFBFBD>ʱִ<CAB1><D6B4>validationQuery<72><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ûή<C3BB><E1BDB5><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD>
 | 
			
		||||
      testOnReturn: false
 | 
			
		||||
      # <20>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
 | 
			
		||||
      removeAbandoned: true
 | 
			
		||||
      # <20><>ʱʱ<CAB1><CAB1>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ)
 | 
			
		||||
      remove-abandoned-timeout: 180
 | 
			
		||||
 | 
			
		||||
      # druid <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> druid <20>ļ<EFBFBD><C4BC>ع<EFBFBD><D8B9>ܵĻ<DCB5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>þͲ<C3BE><CDB2>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
      # <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD>ʵ<EFBFBD>ַ: http://localhost:8080/druid/login.html
 | 
			
		||||
 | 
			
		||||
      # WebStatFilter<65><72><EFBFBD>ڲɼ<DAB2>web-jdbc<62><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݡ<EFBFBD>
 | 
			
		||||
      # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿɲμ<C9B2>: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter
 | 
			
		||||
      web-stat-filter:
 | 
			
		||||
        # <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> WebStatFilter Ĭ<><C4AC><EFBFBD><EFBFBD>true
 | 
			
		||||
        enabled: true
 | 
			
		||||
        # <20><>Ҫ<EFBFBD><D2AA><EFBFBD>ص<EFBFBD>url
 | 
			
		||||
        url-pattern: /*
 | 
			
		||||
        # <20>ų<EFBFBD><C5B3><EFBFBD>̬<EFBFBD><CCAC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
 | 
			
		||||
 | 
			
		||||
      # Druid<69><64><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9>һ<EFBFBD><D2BB>StatViewServlet<65><74><EFBFBD><EFBFBD>չʾDruid<69><64>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
 | 
			
		||||
      # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿɲμ<C9B2>:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE
 | 
			
		||||
      stat-view-servlet:
 | 
			
		||||
        #<23>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>StatViewServlet Ĭ<><C4AC>ֵtrue
 | 
			
		||||
        enabled: true
 | 
			
		||||
        # <20><>Ҫ<EFBFBD><D2AA><EFBFBD>ص<EFBFBD>url
 | 
			
		||||
        url-pattern: /druid/*
 | 
			
		||||
        # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
        reset-enable: true
 | 
			
		||||
        login-username: druid
 | 
			
		||||
        login-password: druid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# mybatis <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
mybatis:
 | 
			
		||||
    configuration:
 | 
			
		||||
      # <20><>û<EFBFBD><C3BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD>ض<EFBFBD><D8B6><EFBFBD> JDBC <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>ֵָ<D6B5><D6B8> JDBC <20><><EFBFBD>͡<EFBFBD>
 | 
			
		||||
      # oracle<6C><65><EFBFBD>ݿ⽨<DDBF><E2BDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪJdbcType.NULL, Ĭ<><C4AC><EFBFBD><EFBFBD>Other
 | 
			
		||||
      jdbc-type-for-null: 'null'
 | 
			
		||||
      # <20>Ƿ<EFBFBD><C7B7><EFBFBD>ӡsql<71><6C><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD>
 | 
			
		||||
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,8 @@
 | 
			
		||||
--  建表语句
 | 
			
		||||
create table if not exists programmer (
 | 
			
		||||
  id       int primary key auto_increment,
 | 
			
		||||
  name     varchar(20),
 | 
			
		||||
  age      tinyint,
 | 
			
		||||
  salary   float,
 | 
			
		||||
  birthday datetime
 | 
			
		||||
)
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
package com.heibaiying.springboot;
 | 
			
		||||
 | 
			
		||||
import com.heibaiying.springboot.bean.Programmer;
 | 
			
		||||
import com.heibaiying.springboot.dao.ProgrammerDao;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.boot.test.context.SpringBootTest;
 | 
			
		||||
import org.springframework.test.context.junit4.SpringRunner;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@RunWith(SpringRunner.class)
 | 
			
		||||
@SpringBootTest
 | 
			
		||||
public class SpringBootDruidMybatisApplicationTests {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ProgrammerDao  programmerDao;
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void contextLoads() {
 | 
			
		||||
        List<Programmer> programmers = programmerDao.selectAll();
 | 
			
		||||
        programmers.forEach(System.out::println);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user