MyBatis Plus配置日志CRUD的使用詳解
配置日志
我們所有的sql在mybatisplus是不可見(jiàn)的,所以在開(kāi)發(fā)中需要配置日志,開(kāi)發(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ù)庫(kù)設(shè)置的自增的,我把自增取消

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

有的人的id如果是Lang類型的可能會(huì)默認(rèn)插入很長(zhǎng)的一段數(shù)字作為id,這里是雪花算法所生成的隨機(jī)數(shù),全球唯一(全局唯一id)
對(duì)應(yīng)數(shù)據(jù)庫(kù)中的主鍵(uuid,自增id,雪花算法,redis,zookeeper)
主鍵生成策略
Twitter的snowflake算法(雪花算法)
snowflake是Twitter開(kāi)源的分布式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ù)庫(kù)表:gmt_create,gmt_modified(格林尼治時(shí)間)
方式一:數(shù)據(jù)庫(kù)方式(工作中一般是不允許修改數(shù)據(jù)庫(kù)的,因?yàn)闋砍兜膯?wèn)題很多很復(fù)雜特別容易出bug還找不出來(lái))
在表中的這兩個(gè)表,就是創(chuàng)建和修改時(shí)間

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

如果還有自己手寫(xiě)日期的小伙伴,以后你就不用一個(gè)一個(gè)添加了
代碼級(jí)別刪除數(shù)據(jù)庫(kù)默認(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)然填充策略可以重寫(xiě),進(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)文章希望大家以后多多支持腳本之家!
- Mybatis實(shí)現(xiàn)增刪改查(CRUD)實(shí)例代碼
- Mybatis實(shí)現(xiàn)數(shù)據(jù)的增刪改查實(shí)例(CRUD)
- Spring Boot整合Mybatis并完成CRUD操作的實(shí)現(xiàn)示例
- Spring boot整合Mybatis實(shí)現(xiàn)級(jí)聯(lián)一對(duì)多CRUD操作的完整步驟
- 基于Mybatis-Plus的CRUD的實(shí)現(xiàn)
- MybatisPlus,無(wú)XML分分鐘實(shí)現(xiàn)CRUD操作
- Mybatis-Plus 通用CRUD的詳細(xì)操作
- mybatisplus?復(fù)合主鍵(多主鍵)?CRUD示例詳解
- MyBatis實(shí)現(xiàn)CRUD的示例代碼
相關(guān)文章
微信小程序錄音文件格式silk遇到的問(wèn)題及解決方法
錄音文件為silk格式,說(shuō)是silk其實(shí)是base64加密后的webm格式,只需將其轉(zhuǎn)為webm格式即可。但是在處理過(guò)程中遇到各種坑,下面小編給大家?guī)?lái)了微信小程序錄音文件格式silk遇到的問(wèn)題及解決方法,感興趣的朋友一起看看吧2018-09-09
spring中@Autowired自動(dòng)注入依賴項(xiàng)的使用
當(dāng)使用@Autowired注解時(shí),它可以自動(dòng)注入依賴項(xiàng),例如其他類的實(shí)例,本文就來(lái)詳細(xì)的介紹一下,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
MyBatis的模糊查詢mapper.xml的寫(xiě)法講解
這篇文章主要介紹了MyBatis的模糊查詢mapper.xml的寫(xiě)法講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring Security使用中Preflight請(qǐng)求和跨域問(wèn)題詳解
這篇文章主要給大家介紹了關(guān)于Spring Security使用中Preflight請(qǐng)求和跨域問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
Java順序表實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java順序表實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Spring boot實(shí)現(xiàn)熱部署的兩種方式詳解
這篇文章主要介紹了Spring boot實(shí)現(xiàn)熱部署的兩種方式,這兩種方法分別是使用 Spring Loaded和使用spring-boot-devtools進(jìn)行熱部署,文中給出了詳細(xì)示例代碼和介紹,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-04-04
堆排序?qū)嵗?Java數(shù)組實(shí)現(xiàn))
下面小編就為大家分享一篇使用Java數(shù)組實(shí)現(xiàn)堆排序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12

