目錄
3. 修改application.yml文件,加入H2相關配置
4. 編寫bean(使用lombok 簡化代碼) controller
5. 在 Spring Boot 啓動類中添加 @MapperScan 註解,掃描 Mapper 文件夾
7. 訪問 localhost:8080/h2-console
8. 也可將h2數據庫換爲mysql,只需更該pom.xml中的相關依賴和application.yml中的數據庫配置即可
1. h2數據庫
h2database爲我們提供了十分輕量,十分快捷方便的內嵌式數據庫
- H2是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。
- 可以同應用程序打包在一起發佈
- 它的另一個用途是用於單元測試。啓動速度快,而且可以關閉持久化功能,每一個用例執行完隨即還原到初始狀態
- 提供JDBC訪問接口,提供基於瀏覽器的控制檯,可以執行sql
- 免費,開源,夠快
- 還方便了程序剛開始dao層單元測試測試,不需要搭建oracle,不需要加載mysql,快速測試寫的dao
2. 在pom.xml中導入相關依賴
<dependencies>
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.7</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3. 修改application.yml文件,加入H2相關配置
logging:
level:
com.example.mbp.mapper: debug
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
schema: classpath:db/schema-h2.sql
data: classpath:db/data-h2.sql
url: jdbc:p6spy:h2:mem:test
username: root
password: test
#在瀏覽器中開啓控制檯
h2:
console:
enabled: true
#不使用p6spy
#driver-class-name: org.h2.Driver
#schema: classpath:db/schema-h2.sql
#data: classpath:db/data-h2.sql
#url: jdbc:h2:mem:test
#username: root
#password: test
4. 編寫bean(使用lombok 簡化代碼) controller
package com.example.mbp.bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@TableName("user")
@Data
public class User {
@TableId(value = "id",type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
package com.example.mbp.controller;
import com.example.mbp.bean.User;
import com.example.mbp.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
public class UserController {
@Autowired
UserMapper userMapper;
HashMap<String,Object> map=new HashMap<>();
@GetMapping("/user/list")
public List<User> getUserList(){
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
//userList.forEach(System.out::println);
return userList;
}
@GetMapping("/user/{id}")
public User getUser(@PathVariable("id") Integer id){
return userMapper.selectById(id);
}
@GetMapping("/user")
public List<User> insertUser(User user){
userMapper.insert(user);
return userMapper.selectList(null);
}
@GetMapping("/user/delete/{id}")
public Map deleteUser(@PathVariable("id") Integer id){
System.out.println(userMapper.selectById(id));
userMapper.deleteById(id);
map.put("delete",userMapper.selectById(id));
map.put("list",userMapper.selectList(null));
return map;
}
}
編寫Mapper類
package com.example.mbp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mbp.bean.User;
public interface UserMapper extends BaseMapper<User> {
}
5. 在 Spring Boot 啓動類中添加 @MapperScan
註解,掃描 Mapper 文件夾
package com.example.mbp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.example.mbp.mapper")
@SpringBootApplication
public class MbpApplication {
public static void main(String[] args) {
SpringApplication.run(MbpApplication.class, args);
}
}
6. 使用P6Spy監控Spring boot數據庫操作
spy.properties相關配置
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定義日誌打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日誌輸出到控制檯
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日誌系統記錄 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 設置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前綴
useprefix=true
# 配置記錄 Log 例外,可去掉的結果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 實際驅動可多個
#driverlist=org.h2.Driver
# 是否開啓慢SQL記錄
outagedetection=true
# 慢SQL記錄標準 2 秒
outagedetectioninterval=2
控制檯會輸出相關的數據庫操作語句
訪問 http://localhost:8080/user/list
http://localhost:8080/user?name=1709&age=9
7. 訪問 localhost:8080/h2-console
8. 也可將h2數據庫換爲mysql,只需更該pom.xml中的相關依賴和application.yml中的數據庫配置即可
<dependencies>
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://localhost:3306/june
username: root
password: root
logging:
level:
com.example.mbp.mapper: debug
#不使用p6spy的配置
#driver-class-name: com.mysql.jdbc.Driver
#url: jdbc:mysql://localhost:3306/june
#username: root
#password: root
注:
參考:
3. 使用P6Spy監控你的Spring boot數據庫操作