目錄
Spring可以對日志進行分目錄打印
日志持久化(讓日志進行長期的保存)
MyBatis操作數據庫(優秀的持久層框架)
MyBatis的寫法
開發規范:
單元測試的寫法
傳遞參數
Spring可以對日志進行分目錄打印
他的意思是說spring相關只打印INFO級別的標準,但是他也能獲取到debug級別的日志
日志設置顏色(只能控制控制臺的顏色(idea的功能)?
日志持久化(讓日志進行長期的保存)
數據存儲在數據庫中,是一種持久化的方式
日志保存在文件中,也是一種持久化的方式
只需要配置文件上,加上logging: file: ?name: 即可(注意如果前面有logging需要注意對其,是logging下的文件
默認是idea的項目內部生成目錄,然后內部放日志(name既可以設置路徑,又可以設置名稱,但是path只能設置路徑(就算是一個文件名稱,也不會被人問是文件名稱)name的文件優先級高于path。
日志分割(企業中,通常日志分割是200M,下面這個代碼說明到達1KB就進行分割)
logging:
logback:rollingpolicy:max-file-size: 1KBfile-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
logger為什么用static的意義:
static就相當于提前把這個創建好了,我們在編程中不是每一步都具有意義。
日志的簡單寫法:
使用Lombok的注解,@Slf4j(他這個對象名字是log)
總結:使用日志可以快速去發現問題和定位問題,spring默認情況喜愛使用的是INFO(即普通事件)我們可以通過lombok提供的@slf4k注解,和log對象,進行快速的打印日志
MyBatis操作數據庫(優秀的持久層框架)
他和Spring沒有什么關系(只不過是Spring算是把它集成了)
配置(mybatis的applictaion.yml)
spring:datasource:
# java100對應的意思是創建的數據庫的名稱url: jdbc:mysql://127.0.0.1:3306/java100?characterEncoding=utf8&useSSL=falseusername: rootpassword: lcl15604007179driver-class-name: com.mysql.cj.jdbc.Driver
簡單的一個接口調用(看一看查詢能否查詢到結果)
列子是定義了一個接口,然后select訪問的用List保存,然后通過UserInfoContorller去調用userInfoMapper(實現這個接口,去調用這個方法),讓他調用這個userInfoMapper
發現能查到結果,而我們做出更改之后發現,它會對名字(表的屬性)和你new的類的屬性,假如不一致(就會給值為null)
MyBatis的寫法
1.xml
2.注解(例子當前是注解的方式)
1.引入Mybatis的依賴,引入對應數據庫依賴,比如mysql
2.配置數據庫相關信息
3.定義JAVA對象
4.實現
package com.example.myBatis.mapper; //ibatis是Mybatis的前身,加入Mapper之后,mybatis就會告訴Spring,把對象交給Spring管理 import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.springframework.boot.autoconfigure.security.SecurityProperties;import java.util.List; @Mapper public interface UserInfoMapper { //根據不同注解,使用不同方法,select是查詢語句@Select("select*from userInfo")List<UserInfo> selectAll();}
開發規范:
使用MyBatis
抽象類的實現場景
企業建表規范:字段名/表名全部小寫
需要三個字段:(哪怕你只需要一個,也必須要有這三個)
1.id
2.創建時間
3.更新時間
(邏輯刪除)
單元測試的寫法
選擇test
package com.example.myBatis.mapper;import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import static org.junit.jupiter.api.Assertions.*;
//@SpringBootTest,是啟動Spring容器,我們才能屬性注入他內部的東西
@SpringBootTest
@Slf4j
class UserInfoMapperTest {@Autowiredprivate UserInfoMapper userInfoMapper;
// @BeforeEach每個測試方法之前的注解@BeforeEachvoid setUp() {log.info("setUp");}
// @AfterEach每個測試方法之后的注解@AfterEachvoid tearDown() {log.info("setdown");}@Testvoid selectAll() {List<UserInfo> list=userInfoMapper.selectAll();log.info(list.toString());}
}
使用MyBatis可能遇到的問題
傳遞參數
如果只有一個參數,當然,此時你傳遞的就可以不是死的1了
如果只有一個參數:那么SQL的名稱可以任意的(合法但是有病),#{}代表要進行傳參
這個意思是(把id 重命名為userId,當然只有一個參數,他也不用一定去進行重命名這個操作)