欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis Plus配置日志CRUD的使用詳解

 更新時(shí)間:2020年08月05日 14:11:15   作者:Asong臭狗屎  
這篇文章主要介紹了MyBatis Plus配置日志,CRUD的使用,,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

配置日志

我們所有的sqlmybatisplus是不可見的,所以在開發(fā)中需要配置日志,開發(fā)完成后,就可以取消日志了,因?yàn)槿罩疽彩菗p耗資源的

#配置日志
mybatis-plus:
 configuration:
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #僅控制臺(tái)輸出的日志

配置完日志后,后面的學(xué)習(xí)就需要注意自動(dòng)生成的SQL,相信你們會(huì)喜歡上MybatisPlus

CRUD使用

Insert插入

 //測(cè)試插入
  @Test
  public void testInsert(){
    Air air = new Air();
    air.setDistrictId(4);
    air.setLastModifyTime(new Date());
    air.setMonitoringStation("哈哈哈哈哈哈");
    air.setMonitorTime(new Date());
    air.setPm10(33);
    air.setPm25(65);
    airMapper.insert(air);
    System.out.println(air);
  }

這里可以看出系統(tǒng)幫我們自動(dòng)生成了一個(gè)id

因?yàn)槲覕?shù)據(jù)庫設(shè)置的自增的,我把自增取消

再看一下插入結(jié)果,發(fā)現(xiàn)標(biāo)紅了,因?yàn)槟J(rèn)會(huì)插入0為主鍵的id,我之前有一個(gè)0所以插入失敗

有的人的id如果是Lang類型的可能會(huì)默認(rèn)插入很長的一段數(shù)字作為id,這里是雪花算法所生成的隨機(jī)數(shù),全球唯一(全局唯一id)
對(duì)應(yīng)數(shù)據(jù)庫中的主鍵(uuid,自增id,雪花算法,redis,zookeeper)

主鍵生成策略

Twittersnowflake算法(雪花算法)

snowflakeTwitter開源的分布式ID生成算法,結(jié)果是一個(gè)long型的ID。其核心思想是:使用41bit作為毫秒數(shù),10bit作為機(jī)器的ID(5個(gè)bit是數(shù)據(jù)中心,5個(gè)bit的機(jī)器ID),12bit作為毫秒內(nèi)的流水號(hào)(意味著每個(gè)節(jié)點(diǎn)在每毫秒可以產(chǎn)生 4096 個(gè) ID),最后還有一個(gè)符號(hào)位,永遠(yuǎn)是0。

要想設(shè)置主鍵的增加方式可以加入注解@TableId,因?yàn)槭敲杜e類所以后面有很多方式

更新操作

//測(cè)試更新
  @Test
  public void testUpdate(){
    Air air = new Air();
    air.setId(9L);
    air.setDistrictId(4);
    air.setLastModifyTime(new Date());
    air.setMonitoringStation("哈");
    air.setMonitorTime(new Date());
    air.setPm10(33);
    air.setPm25(65);
    airMapper.updateById(air);
  }

因?yàn)橄駈ew Date()這種在代碼中出現(xiàn),顯得很low而且消耗資源,我們可以使用注解的方式:

自動(dòng)填充

創(chuàng)建時(shí)間,修改時(shí)間這些個(gè)操作一般都是自動(dòng)化完成的不希望手動(dòng)更新
阿里巴巴研發(fā)手冊(cè): 所有的數(shù)據(jù)庫表:gmt_create,gmt_modified(格林尼治時(shí)間)

方式一:數(shù)據(jù)庫方式(工作中一般是不允許修改數(shù)據(jù)庫的,因?yàn)闋砍兜膯栴}很多很復(fù)雜特別容易出bug還找不出來)

在表中的這兩個(gè)表,就是創(chuàng)建和修改時(shí)間

打鉤自動(dòng)更新當(dāng)前時(shí)間

如果還有自己手寫日期的小伙伴,以后你就不用一個(gè)一個(gè)添加了

代碼級(jí)別刪除數(shù)據(jù)庫默認(rèn)值實(shí)體類的字段屬性上需要增加注釋@TableField

源碼如下,可以看到fill的方法就是填充方法


public class Air {
 @TableId(type = IdType.ASSIGN_ID)
 private Long id;
 private long districtId;
 @TableField(fill = FieldFill.INSERT) //插入的時(shí)候更新插入時(shí)間
 private Date monitorTime;
 private long pm10;
 private long pm25;
 private String monitoringStation;
 @TableField(fill = FieldFill.INSERT_UPDATE) //更新和插入的時(shí)候都更新時(shí)間
 private Date lastModifyTime;
}

當(dāng)然填充策略可以重寫,進(jìn)行自定義填充策略

首先創(chuàng)建一個(gè)MyMetaObjectHandler類(名字隨便)

@Slf4j //抓取日志
@Component //SpringBoot的注解 ,一定不要忘了吧處理器加到IOC容器中
public class MyMetaObjectHandler implements MetaObjectHandler {

  @Override
  public void insertFill(MetaObject metaObject) {
    log.info("start insert fill");
//源碼: setFieldValByName(String fieldName(字段名), Object fieldVal(字段值), MetaObject metaObjec(對(duì)象))
    this.setFieldValByName("monitor_time",new Date(),metaObject);
    this.setFieldValByName("last_modify_time",new Date(),metaObject);
  }

  @Override
  public void updateFill(MetaObject metaObject) {
    log.info("Start update fill....");
    this.setFieldValByName("last_modify_time",new Date(),metaObject);
  }
}

測(cè)試

增加:

更新

可以看到時(shí)間已經(jīng)自動(dòng)更新為當(dāng)前的時(shí)間了

總結(jié)

到此這篇關(guān)于MyBatis Plus配置日志,CRUD的使用的文章就介紹到這了,更多相關(guān)MyBatis Plus配置日志CRUD的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Kafka中Producer和Consumer的作用詳解

    Kafka中Producer和Consumer的作用詳解

    這篇文章主要介紹了Kafka中Producer和Consumer的作用詳解,Kafka是一個(gè)分布式的流處理平臺(tái),它的核心是消息系統(tǒng),Producer是Kafka中用來將消息發(fā)送到Broker的組件之一,它將消息發(fā)布到主題,并且負(fù)責(zé)按照指定的分區(qū)策略將消息分配到對(duì)應(yīng)的分區(qū)中,需要的朋友可以參考下
    2023-12-12
  • skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用

    skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用

    這篇文章主要為大家介紹了skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • java設(shè)計(jì)模式之單例模式

    java設(shè)計(jì)模式之單例模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之單例模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 詳解Spring Security的formLogin登錄認(rèn)證模式

    詳解Spring Security的formLogin登錄認(rèn)證模式

    對(duì)于一個(gè)完整的應(yīng)用系統(tǒng),與登錄驗(yàn)證相關(guān)的頁面都是高度定制化的,非常美觀而且提供多種登錄方式。這就需要Spring Security支持我們自己定制登錄頁面,也就是本文給大家介紹的formLogin模式登錄認(rèn)證模式,感興趣的朋友跟隨小編一起看看吧
    2019-11-11
  • Java文件讀寫詳解

    Java文件讀寫詳解

    在真實(shí)的應(yīng)用場(chǎng)景中,很多時(shí)候需要使用?Java?讀寫文件。比如說,讀取配置文件信息、讀取用戶輸入等。本篇文章將會(huì)詳細(xì)介紹?Java?文件讀寫的相關(guān)知識(shí),其中包括:讀取文件、寫入文件、復(fù)制文件和刪除文件等操作,需要的朋友可以參考下
    2023-05-05
  • Java Properties作為集合三個(gè)方法詳解

    Java Properties作為集合三個(gè)方法詳解

    Properties是JDK1.0中引入的java類,目前也在項(xiàng)目中大量使用,主要用來讀取外部的配置,那除了這個(gè),你對(duì)它其他的一些api也了解嗎? 你了解它是怎么實(shí)現(xiàn)的嗎? 如果不清楚的話,就通過本篇文章帶你一探究竟
    2022-11-11
  • Feign使用@PathVariable方式

    Feign使用@PathVariable方式

    Feign使用@PathVariable注解在URL中插入變量,類似于SpringMVC的用法,通過示例展示了如何使用該注解,并在實(shí)際調(diào)用中替換占位符
    2024-11-11
  • Java中線程用法總結(jié)

    Java中線程用法總結(jié)

    這篇文章主要介紹了Java中線程用法,實(shí)例總結(jié)了java中線程的常見使用技巧,需要的朋友可以參考下
    2015-06-06
  • Windows環(huán)境使用bat腳本啟動(dòng)Java服務(wù)的過程

    Windows環(huán)境使用bat腳本啟動(dòng)Java服務(wù)的過程

    Java項(xiàng)目一般會(huì)被打包成jar后啟動(dòng),在windows系統(tǒng)中可以通過終端窗口cmd啟動(dòng)jar包,即在jar包所在的目錄中打開cmd,或在cmd中進(jìn)入到j(luò)ar包目錄,這篇文章主要介紹了Windows環(huán)境使用bat腳本啟動(dòng)Java服務(wù),需要的朋友可以參考下
    2023-08-08
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(55)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(55)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08

最新評(píng)論