Spring日志完結篇,MyBatis操作數據庫(入門)

目錄

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,當然只有一個參數,他也不用一定去進行重命名這個操作)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213163.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213163.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213163.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql中的DQL查詢

表格為&#xff1a; DQL 基礎查詢 語法&#xff1a;select 查詢列表 from 表名&#xff1a;&#xff08;查詢的結果是一個虛擬表格&#xff09; -- 查詢指定的列 SELECT NAME,birthday,phone FROM student -- 查詢所有的列 * 所有的列&#xff0c; 查詢結果是虛擬的表格&am…

中國各省、市鄉村振興水平數據(附stata計算代碼,2000-2022)

數據簡介&#xff1a;鄉村振興是當下經濟學研究的熱點之一&#xff0c;對鄉村振興進行測度&#xff0c;是研究基礎。測度鄉村振興水平的學術論文廣泛發表在《數量經濟技術經濟研究》等頂刊上。數據來源&#xff1a;主要來源于《中國農村統計年鑒》、《中國人口和就業統計年鑒》…

CRM系統選擇技巧,什么樣的CRM系統好用?

SaaS行業發展迅速&#xff0c;更多的企業逐漸選擇CRM管理系統。打開搜索引擎&#xff0c;有非常多的結果。怎樣在數十萬個搜索結果中選擇適合您的CRM系統&#xff1f;下面我們將聊聊&#xff0c;怎樣選擇CRM系統。 第一步&#xff1a;明確自身需求 重要性&#xff1a;每家企業…

仿照MyBatis手寫一個持久層框架學習

首先數據準備&#xff0c;創建MySQL數據庫mybatis&#xff0c;創建表并插入數據。 DROP TABLE IF EXISTS user_t; CREATE TABLE user_t ( id INT PRIMARY KEY, username VARCHAR ( 128 ) ); INSERT INTO user_t VALUES(1,Tom); INSERT INTO user_t VALUES(2,Jerry);JDBC API允…

深入理解Java虛擬機----內存區域的劃分

Java虛擬機在執行Java程序的過程時&#xff0c;會將它管理的內存劃分為若干個不同的數據區域。主要分為以下幾個區域&#xff1a; 程序計數器 當前線程所執行的字節碼的行號指示器。字節碼解釋器工作時通過改變程序計數器來選取下一條需要執行的字節碼指令&#xff0c;分支、循…

nginx中Include使用

1.include介紹 自己的理解&#xff1a;如果學過C語言的話&#xff0c;感覺和C語言中的Include引入是一樣的&#xff0c;引入的文件中可以寫任何東西&#xff0c;比如server相關信息&#xff0c;相當于替換的作用&#xff0c;一般情況下server是寫在nginx.conf配置文件中的&…

VR串流線方案:實現同時充電傳輸視頻信號

VR&#xff08;Virtual Reality&#xff09;&#xff0c;俗稱虛擬現實技術&#xff0c;是一項具有巨大潛力的技術創新&#xff0c;正在以驚人的速度改變我們的生活方式和體驗&#xff0c;利用專門設計的設備&#xff0c;如頭戴式顯示器&#xff08;VR頭盔&#xff09;、手柄、定…

idea 本身快捷鍵ctrl+d復制 無法像eclipse快捷鍵ctrl+alt+上下鍵,自動換行格式問題解決

問題 例如我使用ctrld 想復制如下內容 復制效果如下&#xff0c;沒有自動換行&#xff0c;還需要自己在進行調整 解決 讓如下快捷鍵第一個刪除 修改成如下&#xff0c;將第二個添加ctrld 提示&#xff1a;對應想要修改的item&#xff0c;直接右鍵&#xff0c;remove是刪…

分子生成領域的stable diffusion - GEOLDM

一、關于stable diffusion 很多人都知道stable diffusion&#xff0c;stable diffusion的出現改變了機器生成領域&#xff0c;讓AI技術第一次無比的接近正常人。大語言模型&#xff0c;AIGC概念于是興起。基于stable diffusion 大家開發了lora&#xff0c; hyperwork等微調技術…

[GWCTF 2019]我有一個數據庫1

提示 信息收集phpmyadmin的版本漏洞 這里看起來不像是加密應該是編碼錯誤 這里訪問robots.txt 直接把phpinfo.php放出來了 這里能看到它所有的信息 這里并沒有能找到可控點 用dirsearch掃了一遍 ####注意掃描buuctf的題需要控制掃描速度&#xff0c;每一秒只能掃10個多一個都…

聚類算法的性能度量

聚類算法的性能度量 聚類算法就是根據數據中樣本與樣本之間的距離或相似度&#xff0c;將樣本劃分為若干組&#xff0f;類&#xff0f;簇&#xff0c;其劃分的原則&#xff1a;簇內樣本相似、簇間樣本不相似&#xff0c;聚類的結果是產生一個簇的集合。 其劃分方式主要分為兩…

API接口并發測試:如何測試API接口的最大并發能力?

本文將深入探討API接口并發測試&#xff0c;介紹并比較不同的API并發測試工具&#xff0c;并分享如何有效測量和提高API接口在最大并發情況下的性能。了解如何應對高并發壓力是保證系統穩定性和用戶滿意度的關鍵&#xff0c;讓我們一起來探索這個重要的話題。 隨著互聯網的迅速…

float,flex和grid布局

頁面布局往往會影響著整體的結構與項目的樣式&#xff0c;通常我們用的布局方式有三種&#xff1a;float,flex,grid 1.float或position布局 1.1概念 首先對于一個頁面來說&#xff0c;有浮動流&#xff0c;文檔流&#xff0c;文本流這幾種模式&#xff0c;而float布局則是…

【EI會議征稿中】第六屆下一代數據驅動網絡國際學術會議(NGDN 2024)

第六屆下一代數據驅動網絡國際學術會議&#xff08;NGDN 2024&#xff09; The Sixth International Conference on Next Generation Data-driven Networks 基于前幾屆在英國埃克塞特 (ISPA 2020) 、中國沈陽 (TrustCom 2021) 和中國武漢 (IEEETrustCom-2022)成功舉辦的經驗&a…

若依vue-新建目錄及菜單

前面我們把標題和logo換成了自己系統的標題和logo了 接下來就是要建立自己需要的菜單和頁面 新建目錄解析 在拉下來的代碼跑起來后 有一個系統菜單--菜單管理(如圖) 在這個菜單的這個頁面內有對應的操作功能 修改功能 這個功能可以修改寫好了的菜單數據 例如:名稱/排序/路由…

python:五種算法(DBO、WOA、GWO、PSO、GA)求解23個測試函數(python代碼)

一、五種算法簡介 1、蜣螂優化算法DBO 2、鯨魚優化算法WOA 3、灰狼優化算法GWO 4、粒子群優化算法PSO 5、遺傳算法GA 二、5種算法求解23個函數 &#xff08;1&#xff09;23個函數簡介 參考文獻&#xff1a; [1] Yao X, Liu Y, Lin G M. Evolutionary programming made…

【小白專用】php執行sql腳本 更新23.12.10

可以使用 PHP 的 mysqli 擴展來執行 SQL 腳本。具體步驟如下&#xff1a; 連接到數據庫&#xff1b;打開 SQL 腳本文件并讀取其中的 SQL 語句&#xff1b;逐條執行 SQL 語句&#xff1b;關閉 SQL 腳本文件&#xff1b;關閉數據庫連接。 以下是通過 mysqli 執行 SQL 腳本的示例…

生產問題: 利用線程Thread預加載數據緩存,其它類全局變量獲取緩存偶發加載不到

生產問題: 利用線程Thread預加載數據緩存偶發加載不到 先上代碼 public class ThreadTest {//本地緩存Map<String, Object> map new HashMap<String, Object>();class ThreadA implements Runnable{Overridepublic void run() {System.out.println("Thread…

RT-Thread學習筆記(六):RT_Thread系統死機日志定位

RT_Thread系統死機日志定位 一、RT_Thread系統死機日志定位二、Cortex-M3 / M4架構知識2.1 Cortex-M3 / M4架構概述2.2 寄存器用途 三、排查步驟 一、RT_Thread系統死機日志定位 RT-Thread 系統發生hardfault死機時&#xff0c;系統默認會打印出一系列寄存器狀態幫助用戶定位死…

XML學習及應用

介紹XML語法及應用 1.XML基礎知識1.1什么是XML語言1.2 XML 和 HTML 之間的差異1.3 XML 用途 2.XML語法2.1基礎語法2.2XML元素2.3 XML屬性2.4XML命名空間 3.XML驗證3.1xml語法驗證3.2自定義驗證3.2.1 XML DTD3.2.2 XML Schema3.2.3PCDATA和CDATA區別3.2.4 參考 1.XML基礎知識 1…