国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

作者介紹:??大廠全棧碼農(nóng)|畢設(shè)實(shí)戰(zhàn)開(kāi)發(fā),專注于大學(xué)生項(xiàng)目實(shí)戰(zhàn)開(kāi)發(fā)、講解和畢業(yè)答疑輔導(dǎo)。

??獲取源碼聯(lián)系方式請(qǐng)查看文末??

?推薦訂閱精彩專欄 ???? 避免錯(cuò)過(guò)下次更新

Springboot項(xiàng)目精選實(shí)戰(zhàn)案例

更多項(xiàng)目:CSDN主頁(yè)YAML墨韻

學(xué)如逆水行舟,不進(jìn)則退。學(xué)習(xí)如趕路,不能慢一步。

目錄

一、項(xiàng)目簡(jiǎn)介

二、開(kāi)發(fā)技術(shù)與環(huán)境配置

2.1 SpringBoot框架

2.2 Java語(yǔ)言簡(jiǎn)介

2.3 Vue的介紹

2.4 mysql數(shù)據(jù)庫(kù)介紹

2.5 B/S架構(gòu)

三、系統(tǒng)功能實(shí)現(xiàn)

四、系統(tǒng)項(xiàng)目截圖

前臺(tái)

汽車信息界面

在線論壇界面

公告信息界面

管理員后臺(tái)頁(yè)面

商家管理界面

公告信息管理界面

論壇管理界面

汽車管理界面

汽車留言管理界面

論壇管理界面

五、核心代碼

5.1、文件上傳

5.2、數(shù)據(jù)庫(kù)配置

5.3、登錄功能實(shí)現(xiàn)

5.4、業(yè)務(wù)層(Service)

5.5、數(shù)據(jù)訪問(wèn)層(Dao)


一、項(xiàng)目簡(jiǎn)介

如今社會(huì)上各行各業(yè),都喜歡用自己行業(yè)的專屬軟件工作,互聯(lián)網(wǎng)發(fā)展到這個(gè)時(shí)候,人們已經(jīng)發(fā)現(xiàn)離不開(kāi)了互聯(lián)網(wǎng)。新技術(shù)的產(chǎn)生,往往能解決一些老技術(shù)的弊端問(wèn)題。因?yàn)閭鹘y(tǒng)二手車交易信息管理難度大,容錯(cuò)率低,管理人員處理數(shù)據(jù)費(fèi)工費(fèi)時(shí),所以專門為解決這個(gè)難題開(kāi)發(fā)了一個(gè)二手車交易系統(tǒng),可以解決許多問(wèn)題。

隨著我國(guó)互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,電子商務(wù)受到了廣大年輕人的歡迎。在二手汽車行業(yè)中也是如此,由于疫情防控等原因,線上二手車銷售額逐年增加,但我國(guó)目前還沒(méi)有一套高效、穩(wěn)定的二手汽車交易網(wǎng)站,滿足人民群眾的銷售、過(guò)戶、簽合同需求。本文將針對(duì)二手汽車市場(chǎng)的實(shí)際需求,開(kāi)發(fā)一個(gè)看車、下單、過(guò)戶一體化的二手汽車交易網(wǎng)站,使用SpringBoot和Vue框架分別開(kāi)發(fā)后端和前端,使用MySQL存儲(chǔ)系統(tǒng)數(shù)據(jù),以滿足二手市場(chǎng)線上銷售的需要。

二手車交易系統(tǒng)可以提高二手車交易信息管理問(wèn)題的解決效率,優(yōu)化二手車交易信息處理流程,保證二手車交易信息數(shù)據(jù)的安全,它是一個(gè)非??煽浚浅0踩膽?yīng)用程序。

二、開(kāi)發(fā)技術(shù)與環(huán)境配置

以Java語(yǔ)言為開(kāi)發(fā)工具,利用了當(dāng)前先進(jìn)的springboot框架,以IDEA為系統(tǒng)開(kāi)發(fā)工具,MySQL為后臺(tái)數(shù)據(jù)庫(kù),vue為后臺(tái)管理頁(yè)面開(kāi)發(fā)的一個(gè)二手車交易系統(tǒng)。

2.1 SpringBoot框架

SpringBoot是一個(gè)全新開(kāi)源的輕量級(jí)框架?;赟pring4.0設(shè)計(jì),其不僅繼承了Spring框架原來(lái)有的優(yōu)秀特性,而且還通過(guò)簡(jiǎn)化配置文件來(lái)進(jìn)一步簡(jiǎn)化了Spring應(yīng)用的整個(gè)搭建以及開(kāi)發(fā)過(guò)程。另外在原本的Spring中由于隨著項(xiàng)目的擴(kuò)大導(dǎo)入的jar包數(shù)量越來(lái)越大,隨之出現(xiàn)了jar包版本之間的兼容性問(wèn)題,而此時(shí)SpringBoot通過(guò)集成大量的框架使得依賴包的版本沖突,以及引用的不穩(wěn)定性問(wèn)題得到了很好的解決。

SpringBoot可以看做是Spring的加強(qiáng)版本,但實(shí)質(zhì)上都是Spring的相關(guān)技術(shù),有了這些優(yōu)秀的開(kāi)源框架,程序員在開(kāi)發(fā)過(guò)程中將事半功倍。

2.2 Java語(yǔ)言簡(jiǎn)介

Java是由SUN公司推出,該公司于2010年被oracle公司收購(gòu)。Java本是印度尼西亞的一個(gè)叫做爪洼島的英文名稱,也因此得來(lái)java是一杯正冒著熱氣咖啡的標(biāo)識(shí)。Java語(yǔ)言在移動(dòng)互聯(lián)網(wǎng)的大背景下具備了顯著的優(yōu)勢(shì)和廣闊的前景,它是面向?qū)ο蟮?,分布式的,?dòng)態(tài)的,具有平臺(tái)無(wú)關(guān)性、安全性、健壯性。Java語(yǔ)言的基本語(yǔ)句語(yǔ)法和C++一樣,但是它面向?qū)ο蟮募夹g(shù)更加徹底,因?yàn)镴ava要求將所有的內(nèi)容都必須封裝成類,把類作為程序的基本單位。由于不允許類外有變量、方法。 Java語(yǔ)言的分布式體現(xiàn)在數(shù)據(jù)分布和操作分布,它是面向網(wǎng)絡(luò)的語(yǔ)言,可以處理TCP/IP協(xié)議,它也支持客戶機(jī)/服務(wù)器的計(jì)算模式。Java語(yǔ)言的動(dòng)態(tài)性是指類在運(yùn)行時(shí)是動(dòng)態(tài)安裝的,使得Java可以動(dòng)態(tài)的維護(hù)程序。Java不支持指針,對(duì)內(nèi)存訪問(wèn)的所有操作都是通過(guò)對(duì)象實(shí)例化實(shí)現(xiàn)的,這樣就避免了指針操作中易產(chǎn)生的錯(cuò)誤,同時(shí)也預(yù)防了病毒對(duì)系統(tǒng)的破壞和威脅。

Java語(yǔ)言的編程風(fēng)格與C語(yǔ)言非常接近,它繼承了C++面向?qū)ο蠹夹g(shù)的核心,它面世之后發(fā)展迅速,非常流行,對(duì)高級(jí)C語(yǔ)言形成了很大的沖擊。業(yè)內(nèi)人士稱之為“一次編譯、到處執(zhí)行”。當(dāng)然java也有缺點(diǎn),在每次執(zhí)行編譯后,字節(jié)碼都需要消耗一定的時(shí)間,在某些程度上降低了性能。但是這并不影響java成為此次設(shè)計(jì)語(yǔ)言的選擇。Java語(yǔ)言簡(jiǎn)單易學(xué),使用它的編程時(shí)間短,功能性強(qiáng),開(kāi)發(fā)者學(xué)習(xí)起來(lái)更簡(jiǎn)便、更快。Java的主要特性有以下幾個(gè):

面向?qū)ο?br> 面向?qū)ο笥兴膫€(gè)特點(diǎn):封裝、繼承、多態(tài)、抽象。抽象是指忽略一個(gè)問(wèn)題中的次要部分,關(guān)注主要部分。多態(tài)是指對(duì)同一種消息做出的不同反應(yīng)。繼承是指在原有的父類方法基礎(chǔ)上增加自己獨(dú)有的方法,而不改變?cè)瓉?lái)父類。

平臺(tái)無(wú)關(guān)性、
Java編譯出來(lái)的是字節(jié)碼,直接由虛擬機(jī)執(zhí)行。在任何平臺(tái)上,只要有Java虛擬機(jī),Java代碼都能運(yùn)行。

可靠性和安全性
Java對(duì)內(nèi)存的訪問(wèn)都必須通過(guò)對(duì)象的實(shí)例變量來(lái)實(shí)現(xiàn),避免了指針中出現(xiàn)的錯(cuò)誤。

多線程
Java提供了多線程功能,利用編程實(shí)現(xiàn)同一時(shí)間同時(shí)工作的功能。

2.3 Vue的介紹

Vue.js致力于構(gòu)建數(shù)據(jù)驅(qū)動(dòng)的web應(yīng)用開(kāi)發(fā)框架,以簡(jiǎn)潔化,輕量級(jí),數(shù)據(jù)驅(qū)動(dòng),模塊友好等優(yōu)勢(shì)深受企業(yè)以及前端開(kāi)發(fā)者的喜愛(ài),成為前端開(kāi)發(fā)人員必備的技能。Vue3.0的出現(xiàn),又帶動(dòng)周邊生態(tài)的發(fā)展,奠定了vue在企業(yè)級(jí)開(kāi)發(fā)的重要地位。

Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計(jì)為可以自底向上逐層應(yīng)用。Vue 的核心庫(kù)只關(guān)注視圖層,不僅易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫(kù)結(jié)合使用時(shí),Vue 也完全能夠?yàn)閺?fù)雜的單頁(yè)應(yīng)用提供驅(qū)動(dòng)。

漸進(jìn)式框架做分層設(shè)計(jì),每層都可選,不同層可以靈活接入其他方案。而當(dāng)你都想用官方的實(shí)現(xiàn)時(shí),會(huì)發(fā)現(xiàn)也早已準(zhǔn)備好,各層之間包括配套工具都能比接入其他方案更便捷地協(xié)同工作。 一個(gè)個(gè)放入,放多少就做多少。

2.4 mysql數(shù)據(jù)庫(kù)介紹

利用MYSQL的數(shù)據(jù)獨(dú)立性、安全性等特點(diǎn),在軟件項(xiàng)目中對(duì)數(shù)據(jù)進(jìn)行操作,可以保證數(shù)據(jù)準(zhǔn)確無(wú)誤,并降低了程序員的應(yīng)用開(kāi)發(fā)時(shí)間。
MYSQL的特點(diǎn)是支持多線程,能方便的對(duì)系統(tǒng)資源充分利用,有效提高速度,還提供多種方式途徑來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接;MYSQL的功能相對(duì)弱小、規(guī)模也小,但本系統(tǒng)要求不高,MYSQL完全可以滿足本系統(tǒng)使用。
利用MYSQL建立系統(tǒng)數(shù)據(jù)庫(kù),不僅有利于數(shù)據(jù)處理業(yè)務(wù)的早期整合,還能利于發(fā)展后兩種數(shù)據(jù)擴(kuò)展的操作。

2.5 B/S架構(gòu)

B/S結(jié)構(gòu)是目前使用最多的結(jié)構(gòu)模式,它可以使得系統(tǒng)的開(kāi)發(fā)更加的簡(jiǎn)單,好操作,而且還可以對(duì)其進(jìn)行維護(hù)。使用該結(jié)構(gòu)時(shí)只需要在計(jì)算機(jī)中安裝數(shù)據(jù)庫(kù),和一些很常用的瀏覽器就可以了。瀏覽器就會(huì)與數(shù)據(jù)庫(kù)進(jìn)行信息的連接,可以實(shí)現(xiàn)很多的功能,B/S結(jié)構(gòu)是可以直接進(jìn)行使用的,而且B/S結(jié)構(gòu)在使用中極大的減少了工作的維護(hù)?;贐/S的軟件,所有的數(shù)據(jù)庫(kù)之間都是相互獨(dú)立的,因此是非常安全的。因?yàn)榛贐/S結(jié)構(gòu)可以清楚的看到系統(tǒng)正在處理的業(yè)務(wù),并且能夠及時(shí)的讓管理人員做出決策,這樣就可以避免企業(yè)的損失。B/S結(jié)構(gòu)的基本特點(diǎn)是集中式的管理模式,用戶使用系統(tǒng)生成數(shù)據(jù)后,這些數(shù)據(jù)就可以存儲(chǔ)到系統(tǒng)的數(shù)據(jù)庫(kù)中,方便日后能夠用到,這樣就可以滿足人們的所有的需求。

三、系統(tǒng)功能實(shí)現(xiàn)

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

四、系統(tǒng)項(xiàng)目截圖

前臺(tái)

汽車信息界面

用戶查看汽車信息界面右側(cè)區(qū)域展示的系統(tǒng)推薦的汽車信息,用戶可以通過(guò)汽車介紹的查看來(lái)了解汽車,用戶可以對(duì)汽車點(diǎn)贊或踩,也能在汽車信息界面下方的留言區(qū)域發(fā)布汽車的留言。

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

在線論壇界面

用戶通過(guò)在線論壇發(fā)布帖子,查看所有的帖子內(nèi)容,以及用戶把自己查看帖子的個(gè)人看法通過(guò)評(píng)論帖子的功能進(jìn)行發(fā)布

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

公告信息界面

用戶在查詢框中編輯公告標(biāo)題即可實(shí)現(xiàn)對(duì)公告信息的查詢,用戶可以查看公告信息界面展示的任意一條公告信息

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

管理員后臺(tái)頁(yè)面

商家管理界面

商家信息包括聯(lián)系方式,郵箱,商家名稱等信息。管理可以使用修改功能對(duì)登記有誤的商家信息進(jìn)行修改,可以刪除需要?jiǎng)h除的商家信息等

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

公告信息管理界面

公告信息包括公告內(nèi)容,圖片等信息。管理可以使用修改功能對(duì)登記有誤的公告信息進(jìn)行修改,可以刪除需要?jiǎng)h除的公告信息等

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

論壇管理界面

論壇信息包括帖子標(biāo)題,內(nèi)容,發(fā)帖時(shí)間等信息,管理員可以刪除需要?jiǎng)h除的帖子信息,可以查看帖子的回復(fù)信息,可以修改帖子等

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

汽車管理界面

汽車信息包括價(jià)格,汽車照片等信息,商家可以新增汽車信息,可以下架汽車,上架汽車以及刪除需要?jiǎng)h除的汽車信息等

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

汽車留言管理界面

汽車留言內(nèi)容是用戶發(fā)布的信息,而汽車的回復(fù)內(nèi)容是商家的回復(fù)信息

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)

論壇管理界面

商家也能通過(guò)論壇管理功能新增帖子,跟蹤發(fā)布的帖子,比如隨時(shí)查看帖子的評(píng)論,以及查看帖子的詳情等

Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng),畢設(shè),java,spring boot,mysql,二手車交易系統(tǒng)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-860449.html

五、核心代碼

5.1、文件上傳

/**
 * 上傳文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上傳文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上傳文件不能為空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		/**
  		 * 如果使用idea或者eclipse重啟項(xiàng)目,發(fā)現(xiàn)之前上傳的圖片或者文件丟失,將下面一行代碼注釋打開(kāi)
   		 * 請(qǐng)將以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替換成你本地項(xiàng)目的upload路徑,
 		 * 并且項(xiàng)目路徑不能存在中文、空格等特殊字符
 		 */
//		FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路徑以后請(qǐng)將該行最前面的//注釋去掉**/
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下載文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

5.2、數(shù)據(jù)庫(kù)配置

server:
    tomcat:
        uri-encoding: UTF-8
    port: 8080
    servlet:
        context-path: /springbootr1tjf

spring:
    datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/springbootr1tjf?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
        username: root
        password: 123456

#        driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
#        url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootr1tjf
#        username: sa
#        password: 123456

    servlet:
      multipart:
        max-file-size: 10MB
        max-request-size: 10MB
    resources:
      static-locations: classpath:static/,file:static/

#mybatis
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  #實(shí)體掃描,多個(gè)package用逗號(hào)或者分號(hào)分隔
  typeAliasesPackage: com.entity
  global-config:
    #主鍵類型  0:"數(shù)據(jù)庫(kù)ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數(shù)字類型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 1
    #字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
    field-strategy: 2
    #駝峰下劃線轉(zhuǎn)換
    db-column-underline: true
    #刷新mapper 調(diào)試神器
    refresh-mapper: true
    #邏輯刪除配置
    logic-delete-value: -1
    logic-not-delete-value: 0
    #自定義SQL注入器
    sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    call-setters-on-nulls: true
    #springboot 項(xiàng)目mybatis plus 設(shè)置 jdbcTypeForNull (oracle數(shù)據(jù)庫(kù)需配置JdbcType.NULL, 默認(rèn)是Other)
    jdbc-type-for-null: 'null' 

5.3、登錄功能實(shí)現(xiàn)

 
package com.controller;
 
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登錄相關(guān)
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登錄
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("賬號(hào)或密碼不正確");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注冊(cè)
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", 
            user.getUsername())) !=null) {
    		return R.error("用戶已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密碼重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity> 
                          ().eq("username", username));
    	if(user==null) {
    		return R.error("賬號(hào)不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密碼已重置為:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 獲取用戶的session用戶信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username",                 
            user.getUsername())) !=null) {
    		return R.error("用戶已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 刪除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}
 

5.4、業(yè)務(wù)層(Service)


package com.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.entity.UserEntity;
import com.utils.PageUtils;


/**
 * 系統(tǒng)用戶
 */
public interface UserService extends IService<UserEntity> {
 	PageUtils queryPage(Map<String, Object> params);
    
   	List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);
   	
   	PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);
	   	
}

5.5、數(shù)據(jù)訪問(wèn)層(Dao)

package com.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.UserEntity;

/**
 * 用戶
 */
public interface UserDao extends BaseMapper<UserEntity> {
	
	List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);

	List<UserEntity> selectListView(Pagination page,@Param("ew") Wrapper<UserEntity> wrapper);
	
}


到了這里,關(guān)于Spring Boot后端+Vue前端:打造高效二手車交易系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot進(jìn)階(79):使用Kotlin輕松打造高效的Spring Boot應(yīng)用

    ????????隨著Java開(kāi)發(fā)語(yǔ)言的發(fā)展,很多新的編程語(yǔ)言不斷涌現(xiàn),其中Kotlin備受開(kāi)發(fā)者青睞,它是一種相對(duì)新的基于JVM的靜態(tài)語(yǔ)言,支持Java虛擬機(jī)(JVM)和Android開(kāi)發(fā)。Kotlin將Java語(yǔ)言中的一些缺點(diǎn)進(jìn)行了優(yōu)化,并增加了很多新的特性,因此在開(kāi)發(fā)效率和代碼可讀性上具有很

    2024年02月08日
    瀏覽(27)
  • Spring Boot整合Camunda打造高效工作流程

    Spring Boot整合Camunda打造高效工作流程

    ????歡迎來(lái)到我的CSDN主頁(yè)!???? ??我是塵緣,一個(gè)在CSDN分享筆記的博主。???? ??點(diǎn)擊這里,就可以查看我的主頁(yè)啦!???? 塵緣的個(gè)人主頁(yè) ??如果感覺(jué)還不錯(cuò)的話請(qǐng)給我點(diǎn)贊吧!???? ??期待你的加入,一起學(xué)習(xí),一起進(jìn)步!???? 在現(xiàn)代的軟件開(kāi)發(fā)中,工作流管

    2024年04月13日
    瀏覽(45)
  • Spring Boot進(jìn)階(76):使用Spring Boot和Jersey打造高效 RESTful API

    Spring Boot進(jìn)階(76):使用Spring Boot和Jersey打造高效 RESTful API

    ????????RESTful API已經(jīng)成為了現(xiàn)代web應(yīng)用開(kāi)發(fā)中的重要組成部分,使得我們可以通過(guò)HTTP請(qǐng)求來(lái)訪問(wèn)服務(wù)器中的資源。Spring Boot和Jersey是兩個(gè)非常流行的開(kāi)源框架,它們可以協(xié)同工作來(lái)幫助我們打造高效的RESTful API。本篇文章將介紹如何使用Spring Boot和Jersey來(lái)創(chuàng)建RESTful API,并

    2024年02月08日
    瀏覽(21)
  • ELADMIN - 免費(fèi)開(kāi)源 admin 后臺(tái)管理系統(tǒng),基于 Spring Boot 和 Vue ,包含前端和后端源碼

    ELADMIN - 免費(fèi)開(kāi)源 admin 后臺(tái)管理系統(tǒng),基于 Spring Boot 和 Vue ,包含前端和后端源碼

    一款簡(jiǎn)單好用、功能強(qiáng)大的 admin 管理系統(tǒng),包含前端和后端源碼,分享給大家。 ELADMIN?是一款基于 Spring Boot、Jpa 或 Mybatis-Plus、 Spring Security、Redis、Vue 的前后端分離的后臺(tái)管理系統(tǒng)。 ELADMIN 的作者在 Github 和 Gitee 上看了很多的項(xiàng)目,發(fā)現(xiàn)大多數(shù)都是基于 Mybatis , 而基于 Sp

    2024年02月04日
    瀏覽(29)
  • Spring Boot進(jìn)階(62):Redis魔法:用發(fā)布訂閱功能打造高效消息隊(duì)列!

    Spring Boot進(jìn)階(62):Redis魔法:用發(fā)布訂閱功能打造高效消息隊(duì)列!

    ? ? ? ? 話說(shuō),玩過(guò)MQ的同學(xué)可能都知道【發(fā)布訂閱】模式,不就是一種消息傳遞方式嘛;如果沒(méi)玩過(guò),那也不打緊,下文我會(huì)簡(jiǎn)單做個(gè)科普。但是對(duì)于Redis如何實(shí)現(xiàn)MQ的【發(fā)布訂閱】功能?這才是問(wèn)題的關(guān)鍵,有的同學(xué)就說(shuō)“壓根沒(méi)玩過(guò)呀!不造” ,哈哈,bug菌既然敢寫便有

    2024年02月09日
    瀏覽(27)
  • Android前端+Spring Boot后端 登錄功能實(shí)現(xiàn)

    Android前端+Spring Boot后端 登錄功能實(shí)現(xiàn)

    創(chuàng)建項(xiàng)目后,自己添加包,框架如下 ? userController里的一些內(nèi)容,只供參考,代碼不全,無(wú)法實(shí)現(xiàn) 數(shù)據(jù)庫(kù)是直接在社區(qū)版IDEA里連接Mysql,在控制臺(tái)端創(chuàng)建的數(shù)據(jù)庫(kù)和user表,用于數(shù)據(jù)交互。 Activity包里是Activity Java類,主要響應(yīng)layout包里activity_login.xml等頁(yè)面布局內(nèi)的按鈕響應(yīng) a

    2024年02月12日
    瀏覽(22)
  • React.js前端 + Spring Boot后端員工管理

    該項(xiàng)目是一個(gè)員工管理系統(tǒng),前端使用 React.js 構(gòu)建,后端使用 Spring Boot 和 Data JPA 和 Lombok 構(gòu)建。它提供了有效管理員工信息的全面解決方案。 特征 響應(yīng)式設(shè)計(jì):響應(yīng)式 UI 設(shè)計(jì),確??绺鞣N設(shè)備的可用性。 數(shù)據(jù)驗(yàn)證:驗(yàn)證用戶輸入以確保數(shù)據(jù)完整性。 使用的技術(shù) 前端:R

    2024年04月28日
    瀏覽(24)
  • 【Python數(shù)據(jù)分析】二手車價(jià)格預(yù)測(cè)

    【Python數(shù)據(jù)分析】二手車價(jià)格預(yù)測(cè)

    (1)讀入數(shù)據(jù) (2)分析數(shù)據(jù)格式和確定使用的模型 (3)數(shù)據(jù)預(yù)處理 (4)使用所選模型進(jìn)行測(cè)試并改進(jìn) (5)應(yīng)用不同算法(模型)對(duì)比效果 (6)使用集成學(xué)習(xí)算法提升回歸效果 (7)網(wǎng)格搜索調(diào)參數(shù) 1、讀取數(shù)據(jù) 這里使用在阿里巴巴天池下載的二手車交易數(shù)據(jù)https://tia

    2024年02月08日
    瀏覽(28)
  • 天池長(zhǎng)期賽:二手車價(jià)格預(yù)測(cè)(422方案分享)

    天池長(zhǎng)期賽:二手車價(jià)格預(yù)測(cè)(422方案分享)

    前言 一、賽題介紹及評(píng)測(cè)標(biāo)準(zhǔn) 二、數(shù)據(jù)探索(EDA) 1.讀取數(shù)據(jù)、缺失值可視化 2.特征描述性統(tǒng)計(jì) 3.測(cè)試集與驗(yàn)證集數(shù)據(jù)分布 4.特征相關(guān)性 三、數(shù)據(jù)清洗 四、特征工程 1.構(gòu)建時(shí)間特征 2.匿名特征交叉 3.平均數(shù)編碼 五、建模調(diào)參 六、模型融合 總結(jié) 賽題屬于回歸類型,相比于

    2024年02月01日
    瀏覽(17)
  • Python【二手車價(jià)格預(yù)測(cè)案例】數(shù)據(jù)挖掘

    Python【二手車價(jià)格預(yù)測(cè)案例】數(shù)據(jù)挖掘

    隨著代步工具的普及,“買賣車”需求激增。但對(duì)于部分預(yù)算有限的個(gè)體或家庭而言,購(gòu)置一輛二手車更為明智。二手車的巨大供給需求催生了近年來(lái)日益壯大的二手車市場(chǎng),但二手車的售賣面臨著價(jià)格漂浮的問(wèn)題。 因此,我們的目標(biāo)是根據(jù)賣家或買家提供的參數(shù)信息計(jì)算價(jià)

    2023年04月09日
    瀏覽(98)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包