增加 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