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

詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性

 更新時間:2021年06月30日 16:25:12   作者:阿拉伯1999  
Spring Boot項目中常有一些相對穩(wěn)定的參數(shù)設置項,其作用范圍是系統(tǒng)級的或模塊級的,這些參數(shù)稱為系統(tǒng)參數(shù)。這些變量以參數(shù)形式進行配置,從而提高變動和擴展的靈活性,保持代碼的穩(wěn)定性

一、使用系統(tǒng)參數(shù)表的好處

​​以數(shù)據庫表形式存儲的系統(tǒng)參數(shù)表比配置文件(.properties文件或.yaml文件)要更靈活,因為無需重啟系統(tǒng)就可以動態(tài)更新。

​系統(tǒng)參數(shù)表可用于存儲下列數(shù)據:

表字段枚舉值,如下列字段:

`question_type`   TINYINT(4)   NOT NULL DEFAULT 0 COMMENT '題型,1-單選題,2-多選題,3-問答題',

​這個字段現(xiàn)在有3種取值,但是難保將來有擴展的可能,如:是非題、計算題、應用題等。

​因此將取值的枚舉值用系統(tǒng)參數(shù)表來配置,可以提高系統(tǒng)擴展靈活性。

​另一方面,對于前端而言,就可以通過查詢系統(tǒng)參數(shù)表數(shù)據,用于UI呈現(xiàn),而不必硬編碼。如前端需要用下拉框來顯示所有可能的”題型“,這個列表就可以查詢系統(tǒng)參數(shù)表來獲取。

​因此可以將所有字段枚舉值納入系統(tǒng)參數(shù)表管理。

參數(shù)設置,如郵件參數(shù),對接的第三方系統(tǒng)的URL等。

二、系統(tǒng)參數(shù)表的表結構

​系統(tǒng)參數(shù)表的表結構如下:

DROP TABLE IF EXISTS `sys_parameters`;
CREATE TABLE `sys_parameters`
(
  `class_id`      INT(11)      NOT NULL DEFAULT 0 COMMENT '參數(shù)大類id',
  `class_key`     VARCHAR(60)  NOT NULL DEFAULT '' COMMENT '參數(shù)大類key',
  `class_name`    VARCHAR(60)  NOT NULL DEFAULT '' COMMENT '參數(shù)大類名稱',
  `item_id`       INT(11)      NOT NULL DEFAULT 0 COMMENT '參數(shù)大類下子項id',
  `item_key`      VARCHAR(200) NOT NULL DEFAULT '' COMMENT '子項key',
  `item_value`    VARCHAR(200) NOT NULL DEFAULT '' COMMENT '子項值',
  `item_desc`     VARCHAR(512) NOT NULL DEFAULT '' COMMENT '子項描述',

  -- 記錄操作信息
  `login_name` VARCHAR(80)  NOT NULL DEFAULT '' COMMENT '操作人賬號',
  `delete_flag`   TINYINT(4)   NOT NULL DEFAULT 0 COMMENT '記錄刪除標記,1-已刪除',
  `create_time`   DATETIME  NOT NULL DEFAULT NOW() COMMENT '創(chuàng)建時間',
  `update_time`   DATETIME           DEFAULT NULL ON UPDATE NOW() COMMENT '更新時間',
  PRIMARY KEY (`class_id`, `item_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT '系統(tǒng)參數(shù)表';

​說明:

​class_id字段只要確保一個參數(shù)大類(如一個枚舉字段名)使用唯一值。使用class_key和item_key自動,便于提高記錄數(shù)據和代碼的可讀性。class_key一般可以取字段名,但如果發(fā)生同名時,需要修改,確保不同表的同名字段,使用不同的class_key。對于枚舉值類型,item_key可以取item_id相同的值,只是數(shù)據類型不同,此item_key轉換成整型數(shù),就是對應字段的值。

​這個表的數(shù)據一般可以由開發(fā)人員提供,包括初始或變動的SQL腳本,由DBA執(zhí)行,項目無需為此開發(fā)界面來維護。

​下面是初始腳本示例:

INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (11, 'receive_flag', '短信接收標志', 0, '0', '未接收', '');
INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (11, 'receive_flag', '短信接收標志', 1, '1', '已接收', '');
INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (11, 'receive_flag', '短信接收標志', 2, '2', '發(fā)送失敗', '');

INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (12, 'question_type', '題型', 1, '1', '單選題', '');
INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (12, 'question_type', '題型', 2, '2', '多選題', '');
INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (12, 'question_type', '題型', 3, '3', '問答題', '');

INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (101, 'url_param', 'URL參數(shù)', 0, 'url_prefix', 'http://questinvest.abc.com:8880', 'url前綴部分');
INSERT INTO sys_parameters(class_id, class_key, class_name, item_id, item_key, item_value, item_desc)
VALUES (101, 'url_param', 'URL參數(shù)', 1, 'url_action', '/questInvest/show', '請求接口方法');

三、系統(tǒng)參數(shù)表在項目中的使用

​在Spring Boot項目中,系統(tǒng)參數(shù)表一般只需在應用啟動時加載一次,并提供更新接口允許管理員來更新數(shù)據。下面詳細說明使用方法。

3.1、Entity類

​先定義系統(tǒng)參數(shù)表的實體類,實體類為SysParameter,代碼如下:

package com.abc.questInvest.entity;

import javax.persistence.Column;

import lombok.Data;

/**
 * @className	: SysParameter
 * @description	: 系統(tǒng)參數(shù)信息對象類
 *
 */
@Data
public class SysParameter {
	//參數(shù)大類id
	@Column(name = "class_id")
	private Integer classId;
	
	//參數(shù)大類key
	@Column(name = "class_key")
	private String classKey;

	//參數(shù)大類名稱
	@Column(name = "class_name")
	private String className;
	
	//子項id
	@Column(name = "item_id")
	private Integer itemId;	
		
	//子項key
	@Column(name = "item_key")
	private String itemKey;	
	
	//子項值
	@Column(name = "item_value")
	private String itemValue;	

	//子項描述
	@Column(name = "item_desc")
	private String itemDesc;	

	//========記錄操作信息================
    // 操作人姓名
    @Column(name = "login_name")
    private String loginName;   
    
    // 記錄刪除標記,保留
    @Column(name = "delete_flag")
    private Byte deleteFlag;    

    // 創(chuàng)建時間
    @Column(name = "create_time")
    private Date createTime;

    // 更新時間
    @Column(name = "update_time")
    private Date updateTime;	
}

3.2、Dao類

​數(shù)據訪問類為SysParameterDao,代碼如下:

package com.abc.questInvest.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import com.abc.questInvest.entity.SysParameter;

/**
 * @className	: SysParameterDao
 * @description	: sys_parameters表數(shù)據訪問類
 *
 */
@Mapper
public interface SysParameterDao {

	//查詢所有系統(tǒng)參數(shù),按class_id,item_id排序
	@Select("SELECT class_id,class_key,class_name,item_id,item_key,item_value,item_desc"
			+ " FROM sys_parameters WHERE delete_flag = 0" 
			+ " ORDER BY class_id,item_id")
    List<SysParameter> selectAll();
}

​SysParameterDao類,使用Mybatis,只需提供查詢接口就行了,因為修改在數(shù)據庫后臺執(zhí)行了。當然如果項目方認為有必要提供界面來維護該表,則可增加相應CRUD的接口。

3.3、Service類

​服務接口類為SysParameterService,代碼如下:

package com.abc.questInvest.service;

import java.util.List;

import com.abc.questInvest.entity.SysParameter;

/**
 * @className	: SysParameterService
 * @description	: 系統(tǒng)參數(shù)數(shù)據服務
 *
 */
public interface SysParameterService {

	/**
	 * 
	 * @methodName		: loadData
	 * @description		: 加載數(shù)據庫中數(shù)據,允許重復調用
	 * @return			: 成功返回true,否則返回false。
	 *
	 */	
	public boolean loadData();
	
	/**
	 * 
	 * @methodName		: getParameterClass
	 * @description		: 獲取指定classKey的參數(shù)類別的子項列表
	 * @param classKey	: 參數(shù)類別key
	 * @return			: 指定classKey的參數(shù)類別的子項列表
	 *
	 */
	public List<SysParameter> getParameterClass(String classKey);
	
	/**
	 * 
	 * @methodName		: getParameterItemByKey
	 * @description		: 根據classKey和itemKey獲取參數(shù)子項
	 * @param classKey	: 參數(shù)類別key
	 * @param itemKey	: 子項key
	 * @return			: SysParameter對象
	 *
	 */
	public SysParameter getParameterItemByKey(String classKey,String itemKey);
	
	/**
	 * 
	 * @methodName		: getParameterItemByValue
	 * @description		: 根據classKey和itemValue獲取參數(shù)子項
	 * @param classKey	: 參數(shù)類別key	
	 * @param itemValue	: 子項值
	 * @return			: SysParameter對象
	 *
	 */
	public SysParameter getParameterItemByValue(String classKey,String itemValue);
}

​SysParameterService類定義了下列接口方法:

  • loadData方法,用于初始加載數(shù)據和更新數(shù)據。
  • getParameterClass方法,獲取指定classKey的類別的所有子項列表。此方法調用會非常頻繁。
  • getParameterItemByKey方法,根據classKey和itemKey獲取參數(shù)子項,用于根據枚舉值顯示物理含義。此方法調用會非常頻繁。
  • getParameterItemByValue方法,根據classKey和itemValue獲取參數(shù)子項,用于根據物理含義取得枚舉值。此方法調用會非常頻繁。

3.4、ServiceImpl類

​服務實現(xiàn)類為SysParameterServiceImpl,代碼如下:

package com.abc.questInvest.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.abc.questInvest.dao.SysParameterDao;
import com.abc.questInvest.entity.SysParameter;
import com.abc.questInvest.service.SysParameterService;

import lombok.extern.slf4j.Slf4j;

/**
 * @className	: SysParameterServiceImpl
 * @description	: SysParameterService實現(xiàn)類
 * @summary		: 實現(xiàn)對系統(tǒng)參數(shù)的管理
 *
 */
@Slf4j
@Service
public class SysParameterServiceImpl implements SysParameterService{
	//sys_parameters表數(shù)據訪問對象
	@Autowired
	private SysParameterDao sysParameterDao;
	
	//管理全部的SysParameter表記錄
	private Map<String,Map<String,SysParameter>> sysParameterMap = new HashMap<String,Map<String,SysParameter>>();
	
	/**
	 * 
	 * @methodName		: loadData
	 * @description		: 加載數(shù)據庫中數(shù)據 
	 * @return			: 成功返回true,否則返回false。
	 *
	 */	
	@Override
	public boolean loadData() {
		try
		{
			//查詢sys_parameters表,獲取全部數(shù)據
			List<SysParameter> sysParameterList = sysParameterDao.selectAll();
			
			synchronized(sysParameterMap) {
				//先清空map,便于刷新調用
				sysParameterMap.clear();
				//將查詢結果放入map對象中,按每個類別組織
				for(SysParameter item : sysParameterList) {
					String classKey = item.getClassKey();
					String itemKey = item.getItemKey();
					Map<String,SysParameter> sysParameterClassMap = null;
					if (sysParameterMap.containsKey(classKey)) {
						//如果存在該類別,則獲取對象
						sysParameterClassMap = sysParameterMap.get(classKey);
					}else {
						//如果不存在該類別,則創(chuàng)建
						sysParameterClassMap = new HashMap<String,SysParameter>();
						//加入map中
						sysParameterMap.put(classKey, sysParameterClassMap);
					}
					sysParameterClassMap.put(itemKey,item);
				}
			}
		}catch(Exception e) {
			log.error(e.getMessage());
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 
	 * @methodName		: getParameterClass
	 * @description		: 獲取指定classKey的參數(shù)類別的子項列表
	 * @param classKey	: 參數(shù)類別key
	 * @return			: 指定classKey的參數(shù)類別的子項列表
	 *
	 */
	@Override
	public List<SysParameter> getParameterClass(String classKey){
		List<SysParameter> sysParameterList = new ArrayList<SysParameter>();
		
		//獲取classKey對應的子map,將所有子項加入列表中
		if (sysParameterMap.containsKey(classKey)) {
			Map<String,SysParameter> sysParameterClassMap = sysParameterMap.get(classKey);
			for(SysParameter item : sysParameterClassMap.values()) {
				sysParameterList.add(item);
			}
		}
		
		return sysParameterList;
	}
	
	/**
	 * 
	 * @methodName		: getParameterItemByKey
	 * @description		: 根據classKey和itemKey獲取參數(shù)子項
	 * @param classKey	: 參數(shù)類別key
	 * @param itemKey	: 子項key
	 * @return			: SysParameter對象
	 *
	 */
	@Override
	public SysParameter getParameterItemByKey(String classKey,String itemKey) {
		SysParameter sysParameter = null;
		
		if (sysParameterMap.containsKey(classKey)) {
			//如果classKey存在
			Map<String,SysParameter> sysParameterClassMap = sysParameterMap.get(classKey);
			if (sysParameterClassMap.containsKey(itemKey)) {
				//如果itemKey存在
				sysParameter = sysParameterClassMap.get(itemKey);
			}
		}
		
		return sysParameter;
	}
	
	/**
	 * 
	 * @methodName		: getParameterItemByValue
	 * @description		: 根據classKey和itemValue獲取參數(shù)子項
	 * @param classKey	: 參數(shù)類別key	
	 * @param itemValue	: 子項值
	 * @return			: SysParameter對象
	 *
	 */
	@Override
	public SysParameter getParameterItemByValue(String classKey,String itemValue) {
		SysParameter sysParameter = null;
		
		if (sysParameterMap.containsKey(classKey)) {
			//如果classKey存在
			Map<String,SysParameter> sysParameterClassMap = sysParameterMap.get(classKey);
			//遍歷
			for (Map.Entry<String,SysParameter> item : sysParameterClassMap.entrySet()) {
				if(item.getValue().getItemValue().equals(itemValue)) {
					//如果匹配值
					sysParameter = item.getValue();
					break;
				}
			}
		}
		
		return sysParameter;
		
	}
}

​SysParameterServiceImpl類使用了Map<String,Map<String,SysParameter>>類型的屬性變量sysParameterMap來管理全部的系統(tǒng)參數(shù),外層Map管理classKey到Map<String,SysParameter>的映射關系,每一項為一個參數(shù)類別,而里層Map<String,SysParameter>,用于管理itemKey與SysParameter之間的映射關系,每一項為該類別下的一個子項。使用sysParameterMap屬性的目的,是將所有系統(tǒng)參數(shù)都加載到內存中,從而無需頻繁訪問數(shù)據庫。

​loadData方法,用于初始加載數(shù)據和更新時刷新數(shù)據,為了防止更新時臟讀數(shù)據,加了同步鎖。這個方法調用不頻繁。

3.5、全局配置服務類

​全局配置服務類用于管理全局配置參數(shù),包括系統(tǒng)參數(shù)、權限樹等。如果只有一種參數(shù),可以不必有此類,因為這樣加了一層殼。

​服務接口類為GlobalConfigService,代碼如下:

package com.abc.questInvest.service;

/**
 * @className	: GlobalConfigService
 * @description	: 全局變量管理類
 *
 */
public interface GlobalConfigService {
	
	/**
	 * 
	 * @methodName		: loadData
	 * @description		: 加載數(shù)據 
	 * @return			: 成功返回true,否則返回false
	 *
	 */
	public boolean loadData();
	
	
	//獲取SysParameterService對象
	public SysParameterService getSysParameterService();
	
	//獲取其它配置數(shù)據服務對象
	//public FunctionTreeService getFunctionTreeService();
}

​GlobalConfigService提供了下列接口方法:

  • loadData方法,加載配置對象數(shù)據,確定多個配置對象的加載次序。
  • getSysParameterService方法,獲取系統(tǒng)參數(shù)服務類對象。
  • 獲取其它可能的配置服務對象的方法。

​服務實現(xiàn)類為GlobalConfigServiceImpl,代碼如下:

package com.abc.questInvest.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.abc.questInvest.service.FunctionTreeService;
import com.abc.questInvest.service.GlobalConfigService;
import com.abc.questInvest.service.RoleFuncRightsService;
import com.abc.questInvest.service.SysParameterService;
import com.abc.questInvest.service.TableCodeConfigService;

/**
 * @className	: GlobalConfigServiceImpl
 * @description	: GlobalConfigService實現(xiàn)類
 *
 */
@Service
public class GlobalConfigServiceImpl implements GlobalConfigService{
		
	//系統(tǒng)參數(shù)表數(shù)據服務對象
	@Autowired
	private SysParameterService sysParameterService;
	
	//其它配置數(shù)據服務對象
	
	/**
	 * 
	 * @methodName		: loadData
	 * @description		: 加載數(shù)據 
	 * @return			: 成功返回true,否則返回false
	 *
	 */
	@Override
	public boolean loadData() {
		boolean bRet = false;
				
		//加載sys_parameters表記錄
		bRet = sysParameterService.loadData();
		if (!bRet) {
			return bRet;
		}
		
		//加載其它配置數(shù)據
				
		return bRet;
	}
	
	
	//獲取SysParameterService對象
	@Override
	public SysParameterService getSysParameterService() {
		return sysParameterService;
	}
	
	//獲取其它配置數(shù)據服務對象方法
	
}

3.6、啟動時加載

​全局配置服務類在應用啟動時加載到Spring容器中,這樣可實現(xiàn)共享,減少對數(shù)據庫的訪問壓力。

​實現(xiàn)一個ApplicationListener類,代碼如下:

package com.abc.questInvest;

import javax.servlet.ServletContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;

import com.abc.questInvest.service.GlobalConfigService;

/**
 * @className	: ApplicationStartup
 * @description	: 應用偵聽器
 *
 */
@Component
public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent>{
    //全局變量管理對象,此處不能自動注入
    private GlobalConfigService globalConfigService = null;
    
    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        try {
    	    if(contextRefreshedEvent.getApplicationContext().getParent() == null){ 
    	    	//root application context 沒有parent.
				
    	    	System.out.println("========定義全局變量==================");
    	    	// 將 ApplicationContext 轉化為 WebApplicationContext
    	        WebApplicationContext webApplicationContext =
    	                (WebApplicationContext)contextRefreshedEvent.getApplicationContext();
    	        // 從 webApplicationContext 中獲取  servletContext
    	        ServletContext servletContext = webApplicationContext.getServletContext();
    	        
    	        //加載全局變量管理對象
    	        globalConfigService = (GlobalConfigService)webApplicationContext.getBean(GlobalConfigService.class);
    	        //加載數(shù)據
    	        boolean bRet = globalConfigService.loadData();
    	        if (false == bRet) {
    	        	System.out.println("加載全局變量失敗");
    	        	return;
    	        }        
    	        //======================================================================
    	        // servletContext設置值
    	        servletContext.setAttribute("GLOBAL_CONFIG_SERVICE", globalConfigService);  
    	        
    	    }
    	} catch (Exception e) {
    	    e.printStackTrace();
    	}        
    }
}

​注意,globalConfigService不能自動注入,否則得到空指針。通過下列代碼來加載bean。

//加載全局變量管理對象
globalConfigService = (GlobalConfigService)webApplicationContext.getBean(GlobalConfigService.class);

​代碼中,將globalConfigService對象作為全局變量加入ServletContext中,就可以實現(xiàn)共享了。

​在啟動類中,加入該應用偵聽器ApplicationStartup。

public static void main(String[] args) {
    SpringApplication springApplication = new SpringApplication(QuestInvestApplication.class);
    springApplication.addListeners(new ApplicationStartup());
    springApplication.run(args);  
}

3.7、在服務實現(xiàn)類中訪問系統(tǒng)參數(shù)

​HttpServletRequest類型對象request在控制器方法中可以獲取,可作為參數(shù)傳入服務實現(xiàn)類的方法中。下面是服務實現(xiàn)類訪問系統(tǒng)參數(shù)的示例代碼:

//獲取ServletContext對象
ServletContext servletContext = request.getServletContext();
//獲取全部數(shù)據服務對象
GlobalConfigService globalConfigService = (GlobalConfigService)servletContext.getAttribute("GLOBAL_CONFIG_SERVICE");
//獲取系統(tǒng)參數(shù)url_prefix的值
String url_prefix = "";
SysParameter sysParameter = null;
sysParameter = globalConfigService.getSysParameterService().getParameterItemByKey("url_param", "url_prefix");
if (sysParameter != null) {
    url_prefix = sysParameter.getItemValue();
}

以上就是詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性的詳細內容,更多關于Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性的資料請關注腳本之家其它相關文章!

相關文章

  • 入門JDK集合之HashMap解析

    入門JDK集合之HashMap解析

    HashMap---基于哈希表的 Map 接口的實現(xiàn)。此實現(xiàn)提供所有可選的映射操作,并允許使用 null 值和 null 鍵。(除了非同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同
    2021-06-06
  • springboot配合Thymeleaf完美實現(xiàn)遍歷功能

    springboot配合Thymeleaf完美實現(xiàn)遍歷功能

    Thymeleaf顯然是一個開發(fā)頁面的技術,現(xiàn)在各種前端技術層出不窮,比如現(xiàn)在主流的Vue、React、AngularJS等。這篇文章主要介紹了springboot配合Thymeleaf完美實現(xiàn)遍歷,需要的朋友可以參考下
    2021-09-09
  • 簡單了解JAVA變量類型及代碼實例

    簡單了解JAVA變量類型及代碼實例

    這篇文章主要介紹了簡單了解JAVA變量類型及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java并發(fā)編程之ThreadLocal詳解

    Java并發(fā)編程之ThreadLocal詳解

    今天給大家?guī)淼氖荍ava并發(fā)編程的相關知識,文中對ThreadLocal做了非常詳細的分析及介紹,對小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Java如何通過反射獲取私有構造、私有對象、私有字段、私有方法

    Java如何通過反射獲取私有構造、私有對象、私有字段、私有方法

    這篇文章主要介紹了Java如何通過反射獲取私有構造、私有對象、私有字段、私有方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java獲取時間如何將當前時間減一天、一月、一年、并格式化

    Java獲取時間如何將當前時間減一天、一月、一年、并格式化

    這篇文章主要介紹了Java獲取時間,將當前時間減一天、一月、一年,并加以格式化,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Mybatis ResultType如何處理返回類型

    Mybatis ResultType如何處理返回類型

    這篇文章主要介紹了Mybatis ResultType如何處理返回類型方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • feign調用中文參數(shù)被encode編譯的問題

    feign調用中文參數(shù)被encode編譯的問題

    這篇文章主要介紹了feign調用中文參數(shù)被encode編譯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 阻塞隊列和線程池原理分析

    Java 阻塞隊列和線程池原理分析

    這篇文章主要介紹了Java 阻塞隊列和線程池原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java整合SSM框架的圖文教程

    java整合SSM框架的圖文教程

    下面筆者就為大家分享一篇java整合SSM框架的圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨筆者過來看看吧
    2017-11-11

最新評論