最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis攔截器如何自動(dòng)設(shè)置創(chuàng)建時(shí)間和修改時(shí)間

 更新時(shí)間:2025年02月11日 11:09:36   作者:倫敦城下的小鞋匠  
文章介紹了如何通過實(shí)現(xiàn)MyBatis的Interceptor接口,在實(shí)體類中自動(dòng)設(shè)置創(chuàng)建時(shí)間和修改時(shí)間,從而提高開發(fā)效率

前言

在日常的插入和修改的時(shí)候要頻繁的插入時(shí)間,浪費(fèi)時(shí)間,可以通過實(shí)現(xiàn)mybatis的 Intercepts注解來實(shí)現(xiàn),獲取實(shí)體,并且在實(shí)體里面插入日期

一、實(shí)現(xiàn)Interceptor接口,并寫相關(guān)邏輯

package com.ruoyi.common.filter;

import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.SecurityUtils;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.*;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.Properties;


/**
 *  Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)   攔截執(zhí)行器的方法
	ParameterHandler (getParameterObject, setParameters)	攔截參數(shù)的處理
	ResultSetHandler (handleResultSets, handleOutputParameters)	攔截結(jié)果集的處理
	StatementHandler (prepare, parameterize, batch, update, query) 攔截Sql語法構(gòu)建的處理
 * @author Administrator
 *
 */
@Intercepts({@Signature(type = Executor.class,method = "update",args = {MappedStatement.class,Object.class})})
@Component
public class HandleTimeInterceptor implements Interceptor {

	@Override
	public Object intercept(Invocation invocation) throws Throwable {
		 Object[] args = invocation.getArgs();
		 MappedStatement mappedStatement = (MappedStatement) args[0];
		 SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
		 if(sqlCommandType== SqlCommandType.UPDATE) {
			 if(args[1] instanceof BaseEntity) {
				BaseEntity baseEntity = (BaseEntity) args[1];
				baseEntity.setUpdateTime(new Date());
				String userId="";
				 try
				 {
					 userId= SecurityUtils.getUserId().toString();
				 }catch (Exception e){
					// throw new BaseException("當(dāng)前沒有登錄人");

				 }
				baseEntity.setUpdateBy(userId);
			 }
		 }else if(sqlCommandType==SqlCommandType.INSERT) {
			 if(args[1] instanceof BaseEntity) {
				BaseEntity baseEntity = (BaseEntity) args[1];
				baseEntity.setCreateTime(new Date());
				String userId="";
				try
				{
				 userId= SecurityUtils.getUserId().toString();
				}catch (Exception e){
					//throw new BaseException("當(dāng)前沒有登錄人");
				}
				baseEntity.setCreateBy(userId);
			}
		 }

		return invocation.proceed();
	}

	@Override
	public Object plugin(Object target) {
		return Plugin.wrap(target, this);
	}

	@Override
	public void setProperties(Properties properties) {
	}
}

二、將插件注冊(cè)到mybatis 的配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 全局參數(shù) -->
    <settings>
        <!-- 使全局的映射器啟用或禁用緩存 -->
        <setting name="cacheEnabled"             value="true"   />
        <!-- 允許JDBC 支持自動(dòng)生成主鍵 -->
        <setting name="useGeneratedKeys"         value="true"   />
        <!-- 配置默認(rèn)的執(zhí)行器.SIMPLE就是普通執(zhí)行器;REUSE執(zhí)行器會(huì)重用預(yù)處理語句(prepared statements);BATCH執(zhí)行器將重用語句并執(zhí)行批量更新 -->
        <setting name="defaultExecutorType"      value="SIMPLE" />
		<!-- 指定 MyBatis 所用日志的具體實(shí)現(xiàn) -->
        <setting name="logImpl"                  value="SLF4J"  />
        <!-- 使用駝峰命名法轉(zhuǎn)換字段 -->
		 <setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
    <plugins>
        <plugin interceptor="com.ruoyi.common.filter.HandleTimeInterceptor"></plugin>

    </plugins>
</configuration>

總結(jié)

然后就可以實(shí)現(xiàn)在實(shí)體里面自動(dòng)設(shè)置創(chuàng)建時(shí)間和修改時(shí)間

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)學(xué)生選課管理系統(tǒng)

    Java實(shí)現(xiàn)學(xué)生選課管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生選課管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • SpringBoot?整合mybatis+mybatis-plus的詳細(xì)步驟

    SpringBoot?整合mybatis+mybatis-plus的詳細(xì)步驟

    這篇文章主要介紹了SpringBoot?整合mybatis+mybatis-plus的步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Springboot中@Value的使用詳解

    Springboot中@Value的使用詳解

    這篇文章主要介紹了Springboot中@Value的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 新版SpringBoot無法主動(dòng)讀取bootstrap.yml的原因和解決方法

    新版SpringBoot無法主動(dòng)讀取bootstrap.yml的原因和解決方法

    在使用新版 Springboot 搭建微服務(wù)時(shí) 發(fā)現(xiàn)配置數(shù)據(jù)源失敗,依賴、配置、注解等所示所有均為正確,所以本文給大家介紹了新版SpringBoot無法主動(dòng)讀取bootstrap.yml的原因和解決方案,需要的朋友可以參考下
    2025-01-01
  • JAVA版排序算法之快速排序示例

    JAVA版排序算法之快速排序示例

    這篇文章主要介紹了JAVA版排序算法之快速排序,結(jié)合實(shí)例形式分析了基于java版的遍歷、遞歸實(shí)現(xiàn)快速排序功能的具體步驟與操作技巧,需要的朋友可以參考下
    2017-01-01
  • java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字

    java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字

    這篇文章主要介紹了java隨機(jī)抽取指定范圍不重復(fù)的數(shù)字的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • 基于JavaMail的常用類詳細(xì)介紹

    基于JavaMail的常用類詳細(xì)介紹

    以下是對(duì)JavaMail的常用類進(jìn)行了詳細(xì)分析的介紹,需要的朋友可以過來參考下
    2013-09-09
  • Java volatile的適用場(chǎng)景實(shí)例詳解

    Java volatile的適用場(chǎng)景實(shí)例詳解

    在本文里我們給大家整理了一篇關(guān)于Java volatile的適用場(chǎng)景實(shí)例內(nèi)容和知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • idea如何在service窗口中顯示多個(gè)服務(wù)

    idea如何在service窗口中顯示多個(gè)服務(wù)

    這篇文章主要介紹了idea如何在service窗口中顯示多個(gè)服務(wù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • springboot集成springsecurity 使用OAUTH2做權(quán)限管理的教程

    springboot集成springsecurity 使用OAUTH2做權(quán)限管理的教程

    這篇文章主要介紹了springboot集成springsecurity 使用OAUTH2做權(quán)限管理的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評(píng)論

理塘县| 木兰县| 济宁市| 宕昌县| 石阡县| 耒阳市| 绩溪县| 包头市| 白玉县| 镇赉县| 治多县| 乐清市| 靖西县| 黄石市| 德格县| 乌海市| 淮滨县| 榆树市| 新乡县| 法库县| 长沙市| 凤阳县| 芜湖市| 高安市| 革吉县| 瓦房店市| 保亭| 栾城县| 北辰区| 哈尔滨市| 敦化市| 太湖县| 望江县| 青田县| 凤城市| 广灵县| 乌鲁木齐市| 阿瓦提县| 南和县| 勐海县| 准格尔旗|