Java EE框架應用開發(fā)(SpringBoot+VueJS) 第2版 課件 工作單元3、4 構建后端項目公共模塊;實現(xiàn)用戶和角色管理接口_第1頁
Java EE框架應用開發(fā)(SpringBoot+VueJS) 第2版 課件 工作單元3、4 構建后端項目公共模塊;實現(xiàn)用戶和角色管理接口_第2頁
Java EE框架應用開發(fā)(SpringBoot+VueJS) 第2版 課件 工作單元3、4 構建后端項目公共模塊;實現(xiàn)用戶和角色管理接口_第3頁
Java EE框架應用開發(fā)(SpringBoot+VueJS) 第2版 課件 工作單元3、4 構建后端項目公共模塊;實現(xiàn)用戶和角色管理接口_第4頁
Java EE框架應用開發(fā)(SpringBoot+VueJS) 第2版 課件 工作單元3、4 構建后端項目公共模塊;實現(xiàn)用戶和角色管理接口_第5頁
已閱讀5頁,還剩161頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元三構建后端項目公共模塊1職業(yè)能力本工作單元主要是基于SpringBoot框架構建后端項目公共模塊,最終希望學生達成如下職業(yè)能力目標:熟練掌握使用SpringInitializr初始化后端項目;熟練掌握使用SpringDataJPA構建數(shù)據(jù)訪問層;熟練掌握導入常用工具類以及編寫后端項目的公共模塊。任務情景在前后端分離架構的項目中,構建后端服務需要解決下面三個問題(如圖3-1所示的①、②、③位置):如何構建基于SpringBoot框架的后端服務?后端服務如何操作MySQL數(shù)據(jù)庫的數(shù)據(jù)表?后端項目如何把數(shù)據(jù)表中得到的數(shù)據(jù)返回到前端頁面?前端服務ConrollerViewModelViewModelVueVueRouter本工作單元的具體任務如下:1.使用SpringInitializr構建后端項目;2.使用SpringDataJPA構建數(shù)據(jù)訪問層;3.封裝統(tǒng)一接口響應的HTTP結(jié)果。

后端服務RestfulApiBussinessServiceRepositoryMySQL數(shù)據(jù)庫sys_user……sys_roleHttp(Ajax)Json321前置知識為順利完成本項目的相關功能,需要掌握如下知識和技術:

Maven基礎知識MySQL基礎知識Spring基礎知識掌握Maven的安裝與配置掌握使用Maven構建項目理解DI、IOC,能夠使用Spring的注解將業(yè)務對象加入容器掌握使用SpringMVC構建Web項目的MVC模塊掌握操作數(shù)據(jù)語言:SELECT、INSTER、UPDATE和DELETE等掌握數(shù)據(jù)語言定義:CREATEDATABASE、CREATETABLE、CREATEINDEX等CHAPTERTHREE任務1使用SpringInitializr構建后端項目任務分析本任務的目的是在IntellijIDEA下使用SpringInitializr構建具備web響應能力和MySQL數(shù)據(jù)庫操作能力的SpringBoot項目,也是本書所要完成的權限管理系統(tǒng)后端服務的基礎。任務實施步驟1使用SpringInitializr構建項目1.打開IntelliJIDEA,選擇'File'->'New'->'Project...',如下圖所示。2.如下圖3-3所示,左邊導航菜單選擇'SpringInitializr'選項,右邊界面上ProjectSDK選項使用'1.8',單擊'Next'按鈕。3.如下圖3-4所示,Group(組織)填寫'edu',Artifact(成品名)填寫'friday',其他保持默認不變,單擊'Next'按鈕。4.如圖3-5所示,選擇項目的依賴模塊,首先選中'DeveloperTools'里面的'SpringBootDevTools'和'Lombok'來提升開發(fā)效率。5.如圖3-6所示,選擇'Web'里的'SpringWeb'模塊來引入SpringMVC框架,使項目具備Web能力。圖3-6構建步驟56.如圖3-7所示,項目需要具備MySQL數(shù)據(jù)庫的操作能力,所以這里選擇'SQL'里面的'MySQLDriver'和'SpringDataJPA',單擊'Next'按鈕。圖3-7構建步驟67.如圖3-8所示,選擇'C:\friday\friday'作為項目的位置,單擊'Finish'按鈕圖3-8構建步驟78.如圖3-9所示,正在下載模板構建項目。等下載完畢,項目即創(chuàng)建完成。圖3-9構建步驟8步驟2安裝Lombok插件1.如果你的IDEA還沒有安裝Lombok,如圖3-10所示,提示直接選擇安裝。圖3-10構建步驟9任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)使用SpringInitializr構建項目Springboot基礎知識感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元三構建后端項目公共模塊CHAPTERTHREE任務2使用SpringDataJPA構建數(shù)據(jù)訪問層任務分析當開發(fā)應用系統(tǒng)時,一個很重要的基礎模塊就是在數(shù)據(jù)庫中新增、修改、刪除以及查詢數(shù)據(jù),在軟件開發(fā)中,通常通過對象關系映射(ORM)方式將程序中的對象自動持久化到MySQL數(shù)據(jù)庫中,這樣在操作業(yè)務對象的時候,不需要編寫復雜的SQL語句,開發(fā)效率大大提高。本項目采用SpringDataJPA框架完成上面功能,任務目標就是使用SpringDataJPA實現(xiàn)對MySQL數(shù)據(jù)表的增、刪、改、查操作。任務實施步驟1使用IntelliJIDEA連接MySQL數(shù)據(jù)庫1.配置MySQL數(shù)據(jù)連接,單擊IntelliJIDEA右側(cè)的Database,選中'DataSource'->'MySQL'選項。2.如圖3-12所示,輸入User為'root',Password為'123456',Database為'friday',單擊下面的'Download'鏈接下載MySQL驅(qū)動,MySQL驅(qū)動安裝完成后,單擊'TestConnection'按鈕。圖3-12配置數(shù)據(jù)庫連接23.如圖3-13所示,測試連接會提示出現(xiàn)'Serverreturnsinnvalidtimezone'錯誤,這是因為驅(qū)動包用的是mysql-connector-java-8.0.11.jar,相應的新版驅(qū)動連接url也有所改動,輸入URL:'jdbc:mysql://localhost:3306/friday?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8'圖3-13配置數(shù)據(jù)庫連接3見表3-1,介紹了上面URL中參數(shù)設置的作用:參數(shù)設置參數(shù)作用useUnicode=trueuseUnicode=true是默認值,如果指定useUnicode=false,那么就會。characterEncoding=utf8設置字符集編碼為utf8,告訴數(shù)據(jù)庫此次連接傳輸UTF8數(shù)據(jù),解決了讀取數(shù)據(jù)庫產(chǎn)生的數(shù)據(jù)亂碼的問題。zeroDateTimeBehavior=convertToNull在操作值為0的timestamp類型時不能正確的處理,而是默認拋出一個異常,設置zeroDateTimeBehavior=convertToNull后,策略就是將日期轉(zhuǎn)換成NULL值,而不拋出異常。useSSL=true指定使用SSL連接。serverTimezone=GMT%2B8設置為北京東8時區(qū)表3-1連接字符串參數(shù)設置4.如圖3-14所示,單擊'TestConnection'按鈕,看到下面的成功界面,修改Name為'friday',單擊'OK'按鈕。圖3-14配置數(shù)據(jù)庫連接45.按圖3-15所示,選擇使用'friday',然后單擊'schemas'->'friday'選項查看數(shù)據(jù)表。圖3-15配置數(shù)據(jù)庫連接56.配置完成后,如果看到圖3-16所示,說明配置成功了。圖3-16配置數(shù)據(jù)庫連接67.如圖3-17所示,雙擊'sys_user'表,就可以對數(shù)據(jù)進行常規(guī)的操作了,至此Database配置就全部完成。圖3-17配置數(shù)據(jù)庫連接7步驟2使用Persistence插件生成實體對象1.創(chuàng)建包'edu.friday.model',作為實體對象的生成位置。2.使用Persistence插件生成數(shù)據(jù)表對應的實體對象,如圖3-18所示,單擊IntelliJIDEA左側(cè)的Persistence視圖,右擊選中'GeneratePersistenceMapping'->'ByDatabaseSchema'菜單項。圖3-18生成持久層13.配置實體類的生成規(guī)則,如圖3-19所示,'ChooseDataSource'配置為'friday','Package'配置為'edu.friday.model'作為實體類的生成位置,'DatabaseSchemaMapping'選擇全部的Friday數(shù)據(jù)表,'GenerateJPAAnnotations'默認選中,單擊'OK'按鈕。圖3-19生成持久層24.如圖3-20所示,在包'edu.friday.model'中生成了數(shù)據(jù)表對應的實體對象,后續(xù)會通過操作這些實體對象來實現(xiàn)數(shù)據(jù)表的增、刪、改、查操作。圖3-20生成持久層3步驟3引入Lombok插件簡化實體類代碼生成的實體類中有大量getXXX和setXXX的代碼片段,導致實體類比較冗長,可以使用Lombok注解來消除Java類中的大量冗長代碼。1.改寫SysUser實體類,在SysUser類上面增加下面三個Lombok注解:l@Data:用于給類增加get、set、equals、hashCode和toString方法;l@NoArgsConstructor:用于給類增加無參構造器;l@AllArgsConstructor:用于給類增加包含所有參數(shù)的構造器。2.將Entity注解放到字段上面,然后刪除掉多余的getXXX、setXXX、equals和hashCode方法,另外不建議使用原始類型,將userId的long原始類型改為Long封裝類型,因為SpringDataJPA默認long的值為0,0在業(yè)務中是一個有意義的數(shù)值,而Long默認值為NULL;SysUser代碼中使用的Entity注解以及它們的作用。注解名稱注解作用@Entity定義對象將會成為被JPA管理的實體,將映射到指定的數(shù)據(jù)庫表。@Table用于指定數(shù)據(jù)庫的表名。@Id定義屬性為數(shù)據(jù)庫的主鍵,一個實體里面必須有一個。@GeneratedValue(strategy=GenerationType.IDENTITY)為主鍵生成策略,GenerationType.IDENTITY表示采用數(shù)據(jù)庫ID自增長,一般用于MySQL數(shù)據(jù)庫。@Basic表示屬性是到數(shù)據(jù)庫表的字段的映射。如果實體的字段上沒有任何注解,默認即為@Basic。@Column(name="user_id")定義該屬性對應數(shù)據(jù)庫中的列名。步驟4編寫UserRepository接口操作SysUser實體類1.在'edu.friday.repository'包里創(chuàng)建SysUserRepository接口,繼承JpaRepository<SysUser,Long>即可實現(xiàn)對SysUser對象的操作,代碼如下:packageedu.friday.repository;importorg.springframework.data.jpa.repository.JpaRepository;import.friday.model.SysUser;@RepositorypublicinterfaceSysUserReporsitoryextendsJpaRepository<SysUser,Long>{}2.單擊繼承的接口JpaRepository,按快捷鍵"Ctrl+F12"查看方法,可以看到JpaRepository已經(jīng)為實現(xiàn)了新增、刪除和查詢的方法,不需要寫額外寫任何的代碼。步驟5配置數(shù)據(jù)源連接池1.在pom.xml文件中添加alibabadruid數(shù)據(jù)連接池的依賴。<dependencies> ... <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>mons</groupId> <artifactId>commons-pool2</artifactId> </dependency></dependencies>2.修改resources下的application.yml文件,添加如下配置參數(shù)。spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/friday?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username:rootpassword:123456platform:mysqltype:com.alibaba.druid.pool.DruidDataSourceinitialSize:1minIdle:3maxActive:20maxWait:60000

timeBetweenEvictionRunsMillis:60000minEvictableIdleTimeMillis:30000validationQuery:select'x'testWhileIdle:truetestOnBorrow:falsetestOnReturn:falsepoolPreparedStatements:truemaxPoolPreparedStatementPerConnectionSize:20#配置監(jiān)控統(tǒng)計攔截的filters,去掉后監(jiān)控界面sql無法統(tǒng)計,'wall'用于防火墻filters:stat,wall,slf4j#通過connectProperties屬性來打開mergeSql功能;慢SQL記錄connectionProperties:druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

jpa:show-sql:trueproperties:hibernate.format_sql:truehibernate.enable_lazy_load_no_trans:true步驟6編寫JUnit代碼測試增、刪、改、查數(shù)據(jù)操作1.在FridayApplicationTests類中編寫測試代碼,測試SysUserReporsitory的增、刪、改、查方法。packageedu.friday;importedu.friday.model.SysUser;importedu.friday.repository.SysUserReporsitory;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;

@SpringBootTestclassFridayApplicationTests{

@AutowiredSysUserReporsitoryuserRepository;

@TestvoidcontextLoads(){}@TestvoidtestUpdateUser(){SysUseruser=userRepository.getOne(newLong(110));user.setUserName("Alex1");user.setNickName("alextest");userRepository.save(user);}

@TestvoidtestFindUsers(){System.out.println(userRepository.findAll());}

@TestvoidtestDeleteUser(){userRepository.deleteById(newLong(110));}}2.執(zhí)行’testSaveUser()’測試代碼,看數(shù)據(jù)是否正常保存到數(shù)據(jù)庫中,單擊要測試方法的運行三角,選擇"run'testSaveUser()'"。3.運行之后,需要檢查兩個地方,如圖所示的①位置是綠色代表測試通過,雙擊'sys_user'數(shù)據(jù)表,檢查圖3-23的②位置數(shù)據(jù)是否保存到'sys_user'數(shù)據(jù)表中。步驟7編寫通用BaseModel類1.業(yè)務系統(tǒng)的大部分表都有create_time、create_by、update_time和update_by這四個公共字段,用來記錄數(shù)據(jù)的創(chuàng)建和更新時間等信息,為了簡化代碼,編寫B(tài)aseModel作為Entity基類來管理公共字段。2.創(chuàng)建’mon.base’包,在包內(nèi)新增BaseModel類,增加公共基礎字段代碼如下。@MappedSuperclass@Data@NoArgsConstructor@AllArgsConstructorpublicclassBaseModelimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateStringcreateBy;@Column(updatable=false)@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateDatecreateTime;privateStringupdateBy;@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateDateupdateTime;privateStringremark;@PrePersistprotectedvoidonCreate(){createTime=newDate();}@PreUpdateprotectedvoidonUpdate(){updateTime=newDate();}}BaseModel類源碼中新增注解的作用。@MappedSuperclass標注為@MappedSuperclass的類將不是一個完整的實體類,它將不會映射到數(shù)據(jù)庫表,但是它的屬性都將映射到其子類的數(shù)據(jù)庫字段中。@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")它是一個時間格式化注解,當讀取日期的時候,會格式化成"yyyy-MM-ddHH:mm:ss"這樣的中文時間。@PrePersist@PrePersist,save之前被調(diào)用,幫助在持久化之前自動填充實體屬性。在Friday項目中用來在保存數(shù)據(jù)之前,自動給createTime賦值,這樣就不用在業(yè)務代碼中進行賦值操作。@PreUpdate@PreUpdate,update之前被調(diào)用,幫助在持久化之前自動填充實體屬性。在Friday項目中用來在保存數(shù)據(jù)之前,自動給updateTime賦值,這樣就不用在業(yè)務代碼中進行賦值操作。3.修改SysUser繼承BaseModel基類publicclassSysUserextendsBaseModel{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="user_id")privateLonguserId;

@Basic@Column(name="user_name")privateStringuserName;

@Basic@Column(name="nick_name")privateStringnickName;@Basic@Column(name="user_type")privateStringuserType;

@Basic@Column(name="email")privateStringemail;

@Basic@Column(name="phonenumber")privateStringphonenumber;

@Basic@Column(name="sex")privateStringsex;

@Basic@Column(name="avatar")privateStringavatar;@Basic@Column(name="password")privateStringpassword;

@Basic@Column(name="status")privateStringstatus;

@Basic@Column(name="del_flag")privateStringdelFlag;

@Basic@Column(name="login_ip")privateStringloginIp;

@Basic@Column(name="login_date")privateTimestamploginDate;}4.對修改的代碼使用Junit執(zhí)行單元測試,執(zhí)行’testSaveUser’測試方法,如圖3-25所示,可以看到數(shù)據(jù)正常保存,而且create_time也保存了當前創(chuàng)建時間。圖3-25新增用戶的測試結(jié)果5.執(zhí)行’testUpdateUser’測試方法,更新user_id為122的數(shù)據(jù),如圖3-26所示,可以看到數(shù)據(jù)正常保存,而且update_time也保存了當前更新時間。圖3-26更新用戶的測試結(jié)果任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)使用SpringDataJPA操作MySQL數(shù)據(jù)庫SpringDataJPA常用注解Junit常用注解使用JUnit編寫測試代碼拓展練習完成全部數(shù)據(jù)表的Repository接口,使其具備增、刪、改、查數(shù)據(jù)表的能力;編寫JUnit單元測試代碼,測試全部數(shù)據(jù)表的增、刪、改、查操作。感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元三構建后端項目公共模塊CHAPTERTHREE任務3導入常用工具類任務分析實現(xiàn)項目業(yè)務功能前,通常會引入一些設計好的工具類,這些工具類的作用是把一個通用的功能包裝在一個類中,讓它可以重用,這樣子在編程時可以避免重復代碼,提高開發(fā)效率,例如字符串工具類、異常處理類等。左圖是項目中使用到的所有工具類。任務實施步驟1導入常用工具類到項目1.識別并獲取工具類源碼。2.將下載的工具類源碼復制到項目中的src目錄。步驟2熟悉常用工具類的用處工具類名工具類的作用HttpStatus-HTTP狀態(tài)碼接口客戶端向服務器發(fā)送異步請求后,服務器會返回狀態(tài)碼給客戶端。HTTP狀態(tài)碼接口就是描述服務器返回給客戶端的所有狀態(tài)碼代碼和內(nèi)容。UserConstants-用戶常量類用戶常量類UserConstants定義了諸如系統(tǒng)用戶名、狀態(tài)等系統(tǒng)默認常量值。CharsetKit-字符集工具類字符集工具類CharsetKit定義了各種字符集常量以及字符集轉(zhuǎn)換方法。Convert-類型轉(zhuǎn)換器類型轉(zhuǎn)換器Convert類提供將對象轉(zhuǎn)換字符串、字符等類型的方法。StrFormatter-字符串格式化字符串格式化StrFormatter類負責將占位符{}按照順序替換為參數(shù)<br>。CustomException-異常處理類異常處理類CustomException定義異常代碼和信息。BeanUtils-實體工具類實體工具類BeanUtils里支持三個方法:轉(zhuǎn)換實體類的List對象,檢查實體類的空置字段,忽略空值null(不包括空字符串)拷貝對象值。SqlUtil-SQL操作工具類SQL操作工具類SqlUtil支持下面三個方法:檢查字符(防止注入繞過),驗證orderby語法是否符合規(guī)范,生成批量插入的預編譯語句。StringUtils-字符串工具類字符串工具類StringUtils支持下面這些功能:判斷參數(shù)是否為空,判斷集合是否為空或非空,判斷對象數(shù)組是否為空或者非空,判斷字符串是否為空或者非空等。IdUtils-ID生成器工具類用來生成唯一主鍵ID。UUID-唯一識別碼工具類用來提供生成通用唯一識別碼的方法。CHAPTERTHREE任務4封裝統(tǒng)一接口響應的HTTP結(jié)果任務分析在前后端分離架構的項目中,基本的工作流程就是前端服務發(fā)起一個HTTP請求,后端服務處理業(yè)務邏輯,然后返回結(jié)果給到前端服務,但是經(jīng)常每個開發(fā)人員都根據(jù)自己的需要來隨意確定響應的數(shù)據(jù)結(jié)構,導致難以維護,本任務就是封裝統(tǒng)一接口響應的HTTP結(jié)果,解決不同的開發(fā)人員使用不同的數(shù)據(jù)結(jié)構響應前端服務,導致規(guī)范不統(tǒng)一的問題。封裝統(tǒng)一接口響應的HTTP結(jié)果的數(shù)據(jù)結(jié)構:返回數(shù)據(jù)結(jié)構備注code對響應結(jié)果進一步細化,200表示請求成功,400表示用戶操作導致的異常,500表示系統(tǒng)異常,999表示其他異常。message友好的提示信息,或者請求結(jié)果提示信息。data通常用于查詢數(shù)據(jù)請求,成功之后將查詢數(shù)據(jù)響應給前端。任務實施步驟1構建統(tǒng)一接口響應結(jié)果類。1.構建增、刪、改、查場景下的響應結(jié)果RestResult;?當請求結(jié)果成功的情況下,使用RestResult.success()構建返回結(jié)果給前端。?當查詢請求等需要返回業(yè)務數(shù)據(jù),請求成功的情況下,使用RestResult.success(data)構建返回結(jié)果給前端。?當請求結(jié)果失敗的情況下,使用RestResult.error()構建返回結(jié)果給前端。2.構建分頁數(shù)據(jù)表格的響應結(jié)果TableDataInfo,用于返回表格分頁數(shù)據(jù);步驟2構建Web層通用數(shù)據(jù)處理類定義web層通用數(shù)據(jù)處理BaseController,用于控制返回響應結(jié)果為成功還是失??;編寫通用響應結(jié)果的代碼應用案例。驗證響應結(jié)果,瀏覽器URL地址欄中輸入'http://localhost:8080/demo/list',返回統(tǒng)一接口的響應結(jié)果。任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)編寫統(tǒng)一接口響應結(jié)果類HTTP狀態(tài)碼SpringMVC請求響應注解編寫Web層通用數(shù)據(jù)處理類單元小結(jié)在前后端分離架構的項目中,其設計的核心思想是前端項目通過調(diào)用后端的API接口對數(shù)據(jù)庫進行操作并使用JSON數(shù)據(jù)進行交互的過程?;赟pringInitializr初始化后端項目、使用SpringDataJPA構建數(shù)據(jù)訪問層以及封裝統(tǒng)一接口響應的HTTP結(jié)果,是項目構建的重要環(huán)節(jié)。通過完成本工作單元的任務和后面的實戰(zhàn)強化,學員即可熟練掌握構建后端項目公共模塊的職業(yè)技能。實戰(zhàn)強化按照任務1步驟,使用SpringInitializr構建實訓項目“誠品書城”后端;按照任務2步驟,構建實訓項目“誠品書城”后端的數(shù)據(jù)訪問層;按照任務3步驟,導入常用工具類到實訓項目“誠品書城”前端;按照任務4步驟,實現(xiàn)實訓項目“誠品書城”后端的統(tǒng)一接口響應的HTTP結(jié)果;感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元四實現(xiàn)用戶和角色管理接口職業(yè)能力本工作單元主要完成項目的用戶和角色管理的接口功能,最終希望學生達成如下職業(yè)能力目標:掌握基于三層架構實現(xiàn)對數(shù)據(jù)的增、刪、改、查功能;靈活使用Postman測試后端接口功能;掌握數(shù)據(jù)表的關聯(lián)分析和修改;靈活使用基礎類。任務情景本工作單元的任務就是完成工作單元二中設計的用戶和角色管理功能的后端接口。序號接口功能HTTP請求方式URL地址支持格式用戶管理的接口1獲取用戶列表GET/system/user/listJSON2新增用戶數(shù)據(jù)POST/system/userJSON3修改用戶數(shù)據(jù)PUT/system/userJSON4刪除用戶數(shù)據(jù)DELETE/system/user/{userIds}JSON5根據(jù)用戶編號獲取用戶信息與角色列表GET/system/user/{userIds},/system/user/JSON角色管理的接口6獲取角色列表GET/system/role/listJSON7新增角色數(shù)據(jù)POST/system/roleJSON8修改角色數(shù)據(jù)PUT/system/roleJSON9刪除角色數(shù)據(jù)DELETE/system/role/{roleIds}JSON10根據(jù)角色編號獲取詳細信息GET/system/role/{roleId}JSON11修改角色狀態(tài)PUT/system/role/changeStatusJSON前置知識controllerrepositoryservicesys_rolesys_usersys_user_role@AutowiredBeanUtilsCustomExceptionSqlUtilStringUtilsStrFormatterConvertUserConstantsCharsetkitHttpStatus三層結(jié)構注解數(shù)據(jù)庫設計基礎類的使用CHAPTERFOUR任務1實現(xiàn)用戶列表接口任務分析本任務完成獲取用戶列表的接口功能,開發(fā)人員將根據(jù)接口描述編碼。所有接口功能的設計遵循IPO(input-process-output)模式:輸入?yún)?shù)+邏輯處理+輸出返回值,該功能基于IPO模式的詳細接口描述。URL地址HTTP請求方式支持格式輸入?yún)?shù)輸出返回值/system/user/listGETJSON無參數(shù)[{ "createBy":"admin",

"createTime":"2018-03-1603:33:00",

"updateBy":"ry",

"updateTime":"2020-03-1509:33:47",

"remark":"管理員",

"userId":1,

"userName":"admin",

"nickName":"alex",

"userType":"00",

"email":"alex@163.com",

"phonenumber":,

"sex":"1",

"avatar":"/mmopen/vi_32/1yzTKJKIfurhDI29RqibEicNOoH0WiaCuKb6jWppVu4uzWovO0d1ICAwuW4rB4zfUxVvGHfNuxXLHu44t3yBkgbicQ/132",

"password":"$2a$10$boXFAiZ4OdtZiT2owx.xx.F848I4rh4JCQQDvgAaEwiktcFRh8Ile",

"status":"0",

"delFlag":"0",

"loginIp":"",

"loginDate":"2018-03-16T03:33:00.000+00:00" }]任務實施步驟1.編寫控制層代碼步驟2.編寫業(yè)務層代碼步驟3.編寫數(shù)據(jù)控制層代碼步驟4.運行調(diào)試任務實施步驟1編寫控制層代碼在controller包下創(chuàng)建SysUserController類通過@RequestMapping+@GetMapping映射'/system/user/list'URL地址以及GET請求方式,使用@RestController表示返回數(shù)據(jù)格式為'JSON',輸出返回值為List<SysUser>對象,使用@Autowired注解加載業(yè)務層SysUserService對象,調(diào)用SysUserService的selectUserList()方法實現(xiàn)查詢用戶表全部數(shù)據(jù)的業(yè)務邏輯代碼。步驟2編寫業(yè)務層代碼在'/src/main/java/edu/friday'包下創(chuàng)建service包,在service包下創(chuàng)建步驟1中使用的SysUserService接口。在service包下創(chuàng)建impl子包,編寫SysUserServiceImpl實現(xiàn)類,調(diào)用數(shù)據(jù)控制層SysUserRepository的findAll()方法獲取用戶表數(shù)據(jù)。步驟3編寫數(shù)據(jù)控制層代碼工作單元三的任務2的步驟4中已創(chuàng)建SysUserRepository,這里不在復述。步驟4運行調(diào)試在IDEA中運行FridayApplication,打開瀏覽器并輸入:http://localhost:8080/system/user/list,運行效果如下:在瀏覽器中查看JSon數(shù)據(jù),格式較混亂,不容易看清數(shù)據(jù)結(jié)構。給大家介紹一款軟件Postman,顯示JSon數(shù)據(jù)格式的效果會更好,打開Postman軟件,注冊并登錄,在GET請求里輸入http://localhost:8080/system/user/list,單擊右邊的Send按鈕,結(jié)果如下:任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)編寫控制層代碼Spring常用注解;SpringMVC常用注解;

編寫業(yè)務層代碼

編寫數(shù)據(jù)訪問層代碼拓展練習仿照任務1的操作步驟實現(xiàn)獲取角色列表的接口功能,在Postman中訪問“http://localhost:8080/system/role/list”,以Json形式展示sys_role表中所有數(shù)據(jù)接口功能HTTP請求方式URL地址支持格式獲取角色列表GET/system/role/listJSON感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元四實現(xiàn)用戶和角色管理接口CHAPTERFOUR任務2實現(xiàn)用戶列表的查詢與分頁接口任務分析本任務是基于任務1的升級,使用戶列表接口具備數(shù)據(jù)分頁查詢和模糊查詢的功能:1.分頁查詢:對數(shù)據(jù)進行分頁時,需要知道當前頁數(shù)和每頁顯示多少條記錄來進行數(shù)據(jù)查詢,所以增加page和size作為輸入?yún)?shù),同時需要輸出返回值為用戶列表數(shù)據(jù)以及總的數(shù)據(jù)條數(shù);2.模糊查詢:用戶管理頁面對用戶名稱、手機號和狀態(tài)進行模糊查詢,所以增加userName、phonenumber、status作為輸入?yún)?shù),同時需要輸出返回值為用戶列表數(shù)據(jù)用戶列表接口描述URL地址HTTP請求方式支持格式輸入?yún)?shù)輸出返回值/system/user/listGETJSON【分頁參數(shù)】page、size;【查詢參數(shù)】userName、phonenumber、status{"total":2,"rows":[{"createBy":"admin","createTime":"2018-03-1603:33:00","updateBy":"ry","updateTime":"2020-03-1509:33:47","remark":"管理員","userId":1,"userName":"admin","nickName":"alex","userType":"00","email":"alex@163.com","phonenumber":,"sex":"1","avatar":"/mmopen/vi_32/1yzTKJKIfurhDI29RqibEicNOoH0WiaCuKb6jWppVu4uzWovO0d1ICAwuW4rB4zfUxVvGHfNuxXLHu44t3yBkgbicQ/132","password":"$2a$10$boXFAiZ4OdtZiT2owx.xx.F848I4rh4JCQQDvgAaEwiktcFRh8Ile","status":"0","delFlag":"0","loginIp":"","loginDate":"2018-03-16T03:33:00.000+00:00"}],"code":200,"msg":0}任務實施步驟1.編寫視圖對象代碼步驟2.編寫控制層代碼步驟3.編寫業(yè)務層代碼步驟4.運行調(diào)試1步驟1編寫視圖對象代碼在model包下創(chuàng)建vo子包,在vo包下增加SysUserVO類將用戶管理頁面的所有數(shù)據(jù)封裝以及數(shù)據(jù)格式驗證。在pom.xml文件中引入格式驗證依賴,用于上面的注解參數(shù)驗證。步驟2編寫控制層代碼修改SysUserController中l(wèi)ist()方法的輸入?yún)?shù)、返回值以及程序邏輯:輸入?yún)?shù):增加兩個參數(shù)SysUserVO和SpringDataJPA提供的Pageable,分別用于封裝查詢參數(shù)userName、phonenumber、status和分頁參數(shù)page、size。返回值:使用TableDataInfo作為分頁列表數(shù)據(jù)的返回值,封裝了任務分析中的返回值數(shù)據(jù)列表rows、數(shù)據(jù)總條數(shù)total、狀態(tài)碼code以及消息msg。程序邏輯:程序?qū)age和size參數(shù)封裝到Pageable對象,Pageable對象作為參數(shù)傳遞給到selectUserList方法實現(xiàn)分頁功能。步驟3編寫業(yè)務層代碼修改SysUserService接口的selectUserList抽象方法。修改SysUserServiceImpl實現(xiàn)類中的selectUserList方法,通過使用SpringDataJPA的ExampleMatcher匹配器構建模糊查詢條件,相當于SQL的匹配條件,通過由實體SysUser對象和ExampleMatcher匹配器共同創(chuàng)建的Example對象真正實現(xiàn)查詢功能。

publicTableDataInfoselectUserList(SysUserVOuser,Pageablepage){ SysUsersysuser=newSysUser(); BeanUtils.copyPropertiesIgnoreEmpty(user,sysuser); sysuser.setDelFlag("0"); ExampleMatcherexampleMatcher=ExampleMatcher.matching() .withMatcher("userName",ExampleMatcher.GenericPropertyMatchers.contains()) .withMatcher("phonenumber",ExampleMatcher.GenericPropertyMatchers.contains()); Example<SysUser>example=Example.of(sysuser,exampleMatcher); Page<SysUser>rs=sysUserRepository.findAll(example,page);

returnTableDataInfo.success(rs.toList(),rs.getTotalElements());}步驟4運行調(diào)試驗證分頁功能:在IDEA中運行FridayApplication,打開瀏覽器并輸入:http://localhost:8080/system/user/list?page=1&size=10&userName=a,運行效果如圖:驗證查詢功能:Postman中測試效果,url輸入http://localhost:8080/system/user/list?userName=a,返回用戶名里含有字母a的數(shù)據(jù),運行效果如圖:知識小結(jié)1.實體對象VO(ViewObject):視圖對象,用于展示層,它的作用是把某個指定頁面(或組件)的所有數(shù)據(jù)封裝起來。DTO(DataTransferObject):數(shù)據(jù)傳輸對象,這個概念來源于J2EE的設計模式,原來的目的是為了EJB的分布式應用提供粗粒度的數(shù)據(jù)實體,以減少分布式調(diào)用的次數(shù),從而提高分布式調(diào)用的性能和降低網(wǎng)絡負載,但在這里,我泛指用于展示層與服務層之間的數(shù)據(jù)傳輸對象。DO(DomainObject):領域?qū)ο?,就是從現(xiàn)實世界中抽象出來的有形或無形的業(yè)務實體。PO(PersistentObject):持久化對象,它跟持久層(通常是關系型數(shù)據(jù)庫)的數(shù)據(jù)結(jié)構形成一一對應的映射關系,如果持久層是關系型數(shù)據(jù)庫,那么,數(shù)據(jù)表中的每個字段(或若干個)就對應PO的一個(或若干個)屬性。2.使用SpringDataJPA的Pageable實現(xiàn)分頁。3.使用SpringDataJPA的Example實現(xiàn)動態(tài)查詢,下面是Example查詢的三核心組成部分:實體對象:即本任務中SysUser對象,對應sys_user表。在構建查詢條件時,一個實體對象代表的是查詢條件中的數(shù)據(jù)表。匹配器:ExampleMatcher對象,它是匹配實體對象的,表示了如何使用實體對象進行查詢,本任務中要查詢用戶名字中有“A”的數(shù)據(jù),使用匹配器構造模糊查詢條件代碼如下:withMatcher("userName",ExampleMatcher.GenericPropertyMatchers.contains())。實例:即Example對象,由實體對象和匹配器共同創(chuàng)建,代表的是完整的查詢條件。程序調(diào)用SpringDataJPA提供的findAll(Example)即可執(zhí)行查詢功能。任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)編寫視圖對象代碼SpringDataJPA的Pageable分頁;SpringDataJPA的Example動態(tài)查詢;編寫分頁代碼編寫查詢代碼拓展練習仿照任務2的操作步驟實現(xiàn)獲取角色列表且具備分頁和查詢功能的接口,在Postman中訪問http://localhost:8080/system/role/list?roleName=測試,結(jié)果如下:接口功能HTTP請求方式URL地址支持格式獲取角色列表GET/system/role/listJSON感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元四實現(xiàn)用戶和角色管理接口CHAPTERFOUR任務3實現(xiàn)用戶新增接口任務分析本任務完成新增用戶數(shù)據(jù)的接口功能,程序業(yè)務邏輯是保存用戶數(shù)據(jù)到sys_user表,同時把該用戶對應的角色關系保存到sys_user_role表接口輸入和返回值描述如下:URL地址HTTP請求支持格式輸入?yún)?shù)輸出返回值/system/userPOSTJSONSysUserVO{"msg":"操作成功","code":200}任務實施步驟1.編寫控制層代碼步驟2.編寫業(yè)務邏輯檢查規(guī)則代碼步驟3.編寫業(yè)務層代碼步驟4.編寫數(shù)據(jù)控制層代碼步驟5.運行調(diào)試步驟1編寫控制層代碼在SysUserController中添加add方法,其中輸入?yún)?shù)使用@RequestBody將前端頁面?zhèn)鬟^來的參數(shù)自動封裝到SysUserVO對象,返回值使用RestResult對象返回msg和code值,業(yè)務邏輯首先進行業(yè)務邏輯規(guī)則檢查,檢查用戶賬號、手機、郵箱唯一性,通過檢查之后然后調(diào)用insertUser方法保存數(shù)據(jù)。1步驟2編寫業(yè)務邏輯檢查規(guī)則代碼在SysUserService接口中增加下面抽象方法,實現(xiàn)步驟1中檢查用戶賬號、手機、郵箱唯一性方法;在SysUserServiceImpl中增加對應的實現(xiàn)方法;步驟3編寫業(yè)務層代碼修改SysUserService接口,實現(xiàn)步驟1中的insertUser方法;在SysUserServiceImpl中增加對應的實現(xiàn)方法。步驟4編寫數(shù)據(jù)控制層代碼repository包下新增custom子包,新增SysUserCustomRepository接口,定義批處理添加用戶角色映射的方法。在repository\custom下新增impl子包,新建SysUserCustomRepositoryImpl實現(xiàn)類,使用EntityManager.createNativeQuery()構建原生SQL的查詢語句,然后使用query.executeUpdate()執(zhí)行上面的查詢語句。SysUserRepository接口繼承SysUserCustomRepository接口。publicclassSysUserCustomRepositoryImplimplementsSysUserCustomRepository{

@PersistenceContextprivateEntityManagerentityManager;

@OverridepublicintbatchInsertUserRole(Long[]userIds,Long[]roles){intlength=userIds.length>roles.length?roles.length:userIds.length;StringBuffersql=newStringBuffer();sql.append("insertintosys_user_role(user_id,role_id)values");sql.append(SqlUtil.getBatchInsertSqlStr(length,2));Queryquery=entityManager.createNativeQuery(sql.toString());intparamIndex=1;for(inti=0;i<length;i++){query.setParameter(paramIndex++,userIds[i]);query.setParameter(paramIndex++,roles[i]);}returnquery.executeUpdate();}}步驟5運行調(diào)試Postman驗證新增用戶數(shù)據(jù)選擇“POST”模式;輸入URL地址:http://localhost:8080/system/user;在body里選擇raw->JSON,提交Json內(nèi)容;單擊“Send”按鈕,查看sys_user和sys_user_role表是否有新增數(shù)據(jù)。知識小結(jié)SpringDataJPA常用API:EntityManager.createNativeQuery()構建原生SQL的查詢語句。Query.executeQuery方法:這個方法被用來執(zhí)行SELECT語句,它是使用最多的SQL語句。Query.executeUpdate方法:用于執(zhí)行INSERT、UPDATE或DELETE語句以及SQLDDL(數(shù)據(jù)定義語言)語句,例如CREATETABLE和DROPTABLE。任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)編寫原生SQL代碼SpringDataJPA的查詢API;運用SpringDataJPA的API編寫查詢代碼拓展練習仿照任務3的操作步驟實現(xiàn)新增角色數(shù)據(jù)的接口,在Postman中訪問http://localhost:8080/system/role,請求方式為POST,然后在sys_role表中檢查是否有新增數(shù)據(jù)。接口功能HTTP請求方式URL地址支持格式新增角色數(shù)據(jù)POST/system/roleJSON感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元四實現(xiàn)用戶和角色管理接口CHAPTERFOUR任務4實現(xiàn)批處理刪除用戶接口任務分析本任務完成刪除用戶數(shù)據(jù)的接口功能:開發(fā)人員編寫的接口輸入和返回值描述如下,業(yè)務邏輯采用邏輯刪除用戶,即不真正刪除用戶數(shù)據(jù),而是通過修改用戶信息del_flag=2標識用戶為刪除狀態(tài),其與角色的關聯(lián)不刪除出,角色查詢時會判斷用戶狀態(tài)。URL地址HTTP請求方式支持格式輸入?yún)?shù)輸出返回值/system/user/{userIds}DELETEJSONuserIds{"msg":"操作成功","code":200}任務實施步驟1.編寫控制層代碼步驟2.編寫業(yè)務層代碼步驟3.編寫數(shù)據(jù)控制層代碼步驟4.運行調(diào)試步驟1編寫控制層代碼在SysUserController中添加remove方法,其中使用@PathVariable將輸入?yún)?shù)綁定到請求路徑中占位符的值

,返回值使用RestResult對象返回msg和code值,業(yè)務邏輯調(diào)用deleteUserByIds方法邏輯刪除用戶數(shù)據(jù)。@DeleteMapping("/{userIds}")publicRestResultremove(@PathVariableLong[]userIds){ returntoAjax(userService.deleteUserByIds(userIds));}步驟2編寫業(yè)務層代碼1.修改SysUserService接口,實現(xiàn)步驟1中的deleteUserByIds方法/***批量刪除用戶信息*@paramuserIds需要刪除的用戶ID*@return結(jié)果*/intdeleteUserByIds(Long[]userIds);2.在SysUserServiceImpl中增加對應的實現(xiàn)方法:@Override@TransactionalpublicintdeleteUserByIds(Long[]userIds){ returnsysUserRepository.deleteUserByIds(userIds);}步驟3編寫數(shù)據(jù)控制層代碼1.修改SysUserRepository接口,增加步驟2中的deleteUserByIds方法,使用@Modifying和@Query的組合完成數(shù)據(jù)表的更新功能。@RepositorypublicinterfaceSysUserRepositoryextendsJpaRepository<SysUser,Long>,SysUserCustomRepository{@Modifying@Query(value="updatesys_usersetdel_flag='2'whereuser_idin:userIds",nativeQuery=true)intdeleteUserByIds(@Param("userIds")Long[]userIds);}步驟4運行調(diào)試Postman下測試批量刪除數(shù)據(jù),調(diào)用刪除接口前查詢sys_user表,user_id為125和128的del_flag值為0。Postman里輸入http://localhost:8080/system/user/125,128,選擇DELETE方式,返回成功信息:查看數(shù)據(jù)表sys_user里user_id為125和128的del_flag值被修改為2,表示邏輯刪除成功:知識小結(jié)物理刪除和邏輯刪除的區(qū)別:物理刪除:直接刪除數(shù)據(jù),執(zhí)行Delete操作。邏輯刪除:通過更新數(shù)據(jù)標識位改變數(shù)據(jù)的狀態(tài),執(zhí)行UPDATE操作,updatedel_falg=2標識為刪除狀態(tài)。SpringDataJPA的查詢注解:@Query:步驟3中使用編碼Query對象的方式操作增刪改查,SpringDataJPA也提供了注解的方式完成操作增刪改查。@Modifying:如果是刪除或修改操作,需要加入@Modifying注解進行修飾,表示這是個UPDATE或DELETE操作。任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)運用@Query+@Modifying編寫數(shù)據(jù)操作代碼邏輯刪除原理;SpringDataJPA的數(shù)據(jù)操作注解;完成數(shù)據(jù)的邏輯刪除功能拓展練習仿照任務4的操作步驟實現(xiàn)刪除角色數(shù)據(jù)的接口,在Postman中訪問http://localhost:8080/system/role/110,結(jié)果如下所示:接口功能HTTP請求方式URL地址支持格式刪除角色數(shù)據(jù)DELETE/system/role/{roleIds}JSON感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元四實現(xiàn)用戶和角色管理接口CHAPTERFOUR任務5實現(xiàn)修改用戶接口任務分析URL地址HTTP請求方式支持格式輸入?yún)?shù)輸出返回值/system/userPUTJSONSysUserVO{"msg":"操作成功","code":200}本任務完成修改用戶數(shù)據(jù)的接口功能.開發(fā)人員編寫的接口輸入和返回值描述如下,業(yè)務邏輯由于sys_user表和sys_user_role的級聯(lián)關系,采用先刪除sys_user_role的關聯(lián)數(shù)據(jù),然后更新sys_user表數(shù)據(jù),最后保存最新的用戶角色映射關系到sys_user_role表的實現(xiàn)邏輯。任務實施步驟1.編寫控制層代碼步驟2.編寫業(yè)務層代碼步驟3.編寫數(shù)據(jù)控制層代碼步驟4.運行調(diào)試步驟1編寫控制層代碼在SysUserController中添加edit方法,其中使用@Validated配合SysUserVO的校驗注解驗證數(shù)據(jù)格式,返回值使用RestResult對象返回msg和code值,業(yè)務邏輯調(diào)用updateUser方法更新用戶數(shù)據(jù)和用戶角色映射數(shù)據(jù)。/***修改用戶*/@PutMappingpublicRestResultedit(@Validated@RequestBodySysUserVOuser){ if(UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))){

returnRestResult.error("修改用戶'"+user.getUserName()+"'失敗,手機號碼已存在"); }elseif(UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))){

returnRestResult.error("修改用戶'"+user.getUserName()+"'失敗,郵箱賬號已存在"); } user.setUpdateBy("system"); booleanflag=userService.updateUser(user); returntoAjax(flag?1:0);}步驟2編寫業(yè)務層代碼1.修改SysUserService接口,實現(xiàn)步驟1中的updateUser方法/***修改保存用戶信息*@paramuser用戶信息*@return結(jié)果*/booleanupdateUser(SysUserVOuser);2.在SysUserServiceImpl中增加對應的實現(xiàn)方法:@Override@TransactionalpublicbooleanupdateUser(SysUserVOuser){ LonguserId=user.getUserId(); Optional<SysUser>op=sysUserRepository.findById(userId); if(!op.isPresent()){ returnfalse; }

//刪除用戶與角色關聯(lián) sysUserRepository.deleteUserRoleByUserId(userId); SysUsersysUser=op.get(); BeanUtils.copyPropertiesIgnoreNull(user,sysUser);

//更新用戶信息 sysUserRepository.save(sysUser);

//新增用戶與角色關聯(lián) insertUserRole(user); returnnull!=sysUser.getUserId();}步驟3編寫數(shù)據(jù)控制層代碼1.修改SysUserRepository接口,增加步驟2中的deleteUserRoleByUserId方法。@Modifying@Query(value="deletefromsys_user_rolewhereuser_id=:userId",nativeQuery=true)intdeleteUserRoleByUserId(@Param("userId")LonguserId);步驟4運行調(diào)試Postman下測試更新用戶數(shù)據(jù),調(diào)用更新接口前查詢sys_user表,如圖所示,user_id為128的郵箱為222@。Postman里輸入http://localhost:8080/system/user,選擇PUT方式,下面選擇body->raw->里面放入JSON數(shù)據(jù),然后單擊Send按鈕,返回成功信息,如圖所示。查看數(shù)據(jù)表sys_user里user_id為128的email值被修改為alex@,如圖所示。任務評價技能點知識點自我評價(不熟悉/基本掌握/熟練掌握/靈活運用)完成數(shù)據(jù)的修改功能MySQL外鍵與級聯(lián)操作拓展練習仿照任務5的操作步驟實現(xiàn)修改角色數(shù)據(jù)的接口,程序邏輯和更新用戶有邏輯一樣,業(yè)務邏輯由于sys_role表和sys_role_menu的級聯(lián)關系,采用先刪除sys_role_menu的關聯(lián)數(shù)據(jù),然后更新sys_role表數(shù)據(jù),最后保存最新的角色菜單映射關系到sys_role_menu表的實現(xiàn)邏輯。接口功能HTTP請求方式URL地址支持格式修改角色數(shù)據(jù)PUT/system/roleJSON完成后項目重啟FridayApplication,在Postman中訪問http://localhost:8080/system/role,請求方式為PUT,運行結(jié)果如圖:查看數(shù)據(jù)表sys_role里role_id為110的role_name值被修改為test-update。查看數(shù)據(jù)表sys_role_menu里新增了3條role_id為110的數(shù)據(jù)。感謝觀看~實項操目JavaEE框架應用開發(fā)(SpringBoot+VueJS)工作單元四實現(xiàn)用戶和角色管理接口CHAPTERFOUR任務6獲取用戶信息與角色列表接口任務分析本任務完成獲取用戶信息與角色列表的接口功能。開發(fā)人員編寫的接口輸入和返回值描述如下,此接口主要用于在新增用戶時返回角色列表數(shù)據(jù)roles,在修改用戶時返回當前用戶數(shù)據(jù)data和用戶角色對應關系列表roleIds。修改用戶數(shù)據(jù)的接口功能詳情描述URL地址HTTP請求方式支持格式輸入?yún)?shù)輸出返回值/system/user/{userId},/system/user/GETJSONuserId{"msg":"操作成功","code":200,"roleIds":[1],"data":{"createBy":"admin","createTime":"2018-03-1603:33:00","updateBy":"r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論