




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java架構(gòu)師-技術(shù)專家練習(xí)筆記開發(fā)工具:idea1、Idea創(chuàng)建project項(xiàng)目(前提:Java環(huán)境已經(jīng)配好Maven已經(jīng)安裝好)1、如果是已經(jīng)打開的項(xiàng)目:File-New-Project如果是新打開的idea:直接選CreateNewProject創(chuàng)建新項(xiàng)目2、之后選擇Maven:3給項(xiàng)目起名字,然后點(diǎn)擊【finish】4:創(chuàng)建好的新項(xiàng)目:2、配置文件及添加相關(guān)工程1、打開【pom.xml】文件添加打包方式:<packaging>pom</packaging>添加子工程:選中工程-右擊:New-Module選擇:【Next】填寫名稱,點(diǎn)擊【Finish】子模塊添加成功!注意:子模塊默認(rèn)打包方式:jar子模塊的層級結(jié)構(gòu):父類的【pom.xml】中多了<modules><module>common</module></modules>類似第2步,創(chuàng)建【pojo】、【mapper】、【service】【api(即controller)】模塊子模塊間的相互引用在【pojo】子模塊的【pom.xml】中添加:<dependencies><dependency><groupId></groupId><artifactId>common</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>在【mapper】模塊的【pom.xml】中添加:<dependencies><dependency><groupId></groupId><artifactId>pojo</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>在【service】模塊的【pom.xml】中添加:<dependencies><dependency><groupId></groupId><artifactId>mapper</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>在【api】模塊的【pom.xml】中添加:<dependencies><dependency><groupId></groupId><artifactId>service</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>即:api(即controller)->service->mapper->pojo->commonMaven打包操作打開maven管理界面顯示(root)的即為父項(xiàng)目,根節(jié)點(diǎn)。點(diǎn)擊【install】進(jìn)行安裝。顯示【BUILDSUCCESS】即為構(gòu)建打包成功設(shè)置父項(xiàng)目pom基本配置-相關(guān)屬性及jar包引用maven配置File->Settings->BuildExecutionDeployment->Maven修改maven地址:引入依賴parent<!--引入依賴parent--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.1.6.RELEASE</version></parent>設(shè)置資源屬性:properties文件編碼格式File->Settings->Editor->Fileencodings-->設(shè)置編碼引入依賴dependency<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies>創(chuàng)建啟動類在【Java】目錄下-右擊-【new】-創(chuàng)建【package】包在新建的包下:右擊【new】-【JavaClass】創(chuàng)建java文件起名【Application】packagecom.zyx;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.scheduling.annotation.EnableScheduling;importtk.mybatis.spring.annotation.MapperScan;/***@Description*@Date2023-01-06**/@SpringBootApplication@MapperScan(basePackages={"com.zyx.mapper",""})@EnableSchedulingpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}POM文件引入數(shù)據(jù)源的配置(使用hikariCP)引入mysql包<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>引入mybatis包<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency>yml文件的相關(guān)配置在【api】子模塊下-【src】-【Java】-【resourres】-【new】-【file】Application文件配置:#########################web訪問端口號約定8088########################server:port:8088tomcat:uri-encoding:UTF-8max-http-header-size:80KB#########################配置數(shù)據(jù)源信息########################spring:datasource:#數(shù)據(jù)源的相關(guān)配置type:com.zaxxer.hikari.HikariDataSource#數(shù)據(jù)源類型HikariCPdriver-class-name:com.mysql.jdbc.Driver#mysql驅(qū)動url:jdbc:mysql://localhost:16033/zyx?characterEncoding=utf8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNullusername:rootpassword:B@ojia56127!hikari:connection-timeout:30000#等待連接池分配連接的最大時長(毫秒),超過這個時長還沒可用的連接,則發(fā)生SQLException,默認(rèn)30秒minimum-idle:5#最小連接數(shù)maximum-pool-size:20#最大連接數(shù)auto-commit:true#自動提交idle-timeout:600000#連接超時的最長時長(毫秒)超時則被釋放(retired)默認(rèn):10分鐘pool-name:DateSourceHikariCP#連接池名字max-lifetime:1800000#連接到生命時長(毫秒)超時而且沒被使用則被釋放(retired)默認(rèn):30分鐘1800000msconnection-test-query:SELECT1#連接測試查詢語句#######################################mybatis配置######################################mybatis:type-aliases-package:com.zyx.pojo#所有POJO類所在包路徑mapper-locations:classpath:mapper/*.xml#mapper映射文件Mybatis逆向生成目錄結(jié)構(gòu):pom.xml配置<dependencies><!--Mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency><!--mapper--><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>4.2.2</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version></dependency></dependencies>通用Mapper提供了一些通用的方法,這些通用方法是以接口的形式提供的。com.imooc.my.mapper路徑下生成MyMapper接口文件:packagecom.imooc.my.mapper;importmon.Mapper;importmon.MySqlMapper;publicinterfaceMyMapper<T>extendsMapper<T>,MySqlMapper<T>{}注意:mymapper文件,不能被Application掃描到generatorConfig.xml文件例子:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-////DTDMyBatisGeneratorConfiguration1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><contextid="MysqlContest"targetRuntime="MyBatis3Simple"defaultModelType="flat"><propertyname="javaFileEncoding"value="UTF-8"/><propertyname="beginningDelimiter"value="`"/><propertyname="endingDelimiter"value="`"/><!--通用mapper所在目錄自己創(chuàng)建的MyMapper文件路徑:com.zyx.mapper--><plugintype="tk.mybatis.mapper.generator.MapperPlugin"><propertyname="mappers"value="com.imooc.my.mapper.MyMapper"/></plugin><!--添加:useSSL=false解決:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信鏈路故障--><jdbcConnectiondriverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:16033/zyx-dev?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false"userId="root"password="B@ojia56127!"></jdbcConnection><!--對應(yīng)生成的pojo所在包--><javaModelGeneratortargetPackage="com.imooc.pojo"targetProject="src/main/java"></javaModelGenerator><!--對應(yīng)生成mapper所在目錄--><sqlMapGeneratortargetPackage="mapper"targetProject="src/main/resources"></sqlMapGenerator><!--配置mapper對應(yīng)的Java映射--><javaClientGeneratortargetPackage="com.imooc.mapper"targetProject="src/main/java"type="XMLMAPPER"></javaClientGenerator><!--修改表名:tableName/指定數(shù)據(jù)庫下的表名:catalog="zyx-dev"(zyx-dev數(shù)據(jù)庫)--><tablecatalog="zyx-dev"tableName="users"></table></context></generatorConfiguration>逆向生成的代碼,代碼啟動package.imooc.mybatis.utils;importorg.mybatis.generator.api.MyBatisGenerator;importorg.mybatis.generator.config.Configuration;importorg.mybatis.generator.config.xml.ConfigurationParser;importernal.DefaultShellCallback;importjava.io.File;importjava.util.ArrayList;importjava.util.List;publicclassGeneratorDisplay{publicvoidgenerator()throwsException{List<String>warnings=newArrayList<>();booleanoverwrite=true;//FileconfigFile=newFile("generatorConfig.xml");ConfigurationParsercp=newConfigurationParser(warnings);Configurationconfig=cp.parseConfiguration(configFile);DefaultShellCallbackcallback=newDefaultShellCallback(overwrite);MyBatisGeneratormyBatisGenerator=newMyBatisGenerator(config,callback,warnings);myBatisGenerator.generate(null);}publicstaticvoidmain(String[]args){try{GeneratorDisplaygeneratorDisplay=newGeneratorDisplay();generatorDisplay.generator();}catch(Exceptione){e.printStackTrace();}}}Junit測試配置pom.xml配置:<!--添加junit測試包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><!--作用域--><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency>測試類:TrabsTestimportcom.zyx.Application;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTest(classes=Application.class)publicclassTrabsTest{@TestpublicvoidmyTest(){System.out.println("測試類!");}}Springboot事務(wù)(Transactional)的傳播PropagationREQUIRED使用當(dāng)前的事務(wù),如果當(dāng)前沒有事務(wù),則自己新建一個事務(wù),子方法是必須運(yùn)行再一個事務(wù)中的;如果當(dāng)前存在事務(wù),則加入這個事務(wù),成為一個整體。常用于:增刪改。舉例:領(lǐng)導(dǎo)沒飯吃,我有錢,我會自己買了自己吃;領(lǐng)導(dǎo)有的吃,會分給我一起吃。SUPPORTS如果當(dāng)前有事務(wù),則使用事務(wù);如果當(dāng)前沒有事務(wù),則不使用事務(wù)。常用于查詢。舉例:領(lǐng)導(dǎo)沒飯吃,我也沒飯吃,領(lǐng)導(dǎo)有飯吃,我也有飯吃。MANDATORY該傳播屬性強(qiáng)制必須存在一個事務(wù),如果不存在,則拋出異常。舉例:領(lǐng)導(dǎo)必須管飯,不管飯就沒飯吃,我就不樂意了,就不干了(拋出異常)REQUIRES_NEW如果當(dāng)前有事務(wù),則掛起該事務(wù),并且自己創(chuàng)建一個新的事務(wù),給自己用。如果當(dāng)前沒有事務(wù),則同REQUIRED舉例:領(lǐng)導(dǎo)有飯吃,我偏不要,我自己買飯吃。NOT_SUPPORTED如果當(dāng)前有事務(wù),則把事務(wù)掛起,自己不適用事務(wù)去運(yùn)行數(shù)據(jù)庫操作。舉例:領(lǐng)導(dǎo)有飯吃,分了一點(diǎn)給我,但我太忙了,放一邊,我不吃。NEVER如果當(dāng)前有事務(wù)存在,則拋出異常。舉例:領(lǐng)導(dǎo)有飯吃,我不想吃,我熱愛工作。(拋出異常)NESTED如果當(dāng)前有事務(wù),則開啟子事務(wù)(嵌套事務(wù)),嵌套事務(wù)是獨(dú)立提交或者回滾;如果當(dāng)前沒有事務(wù),則同REQUIRED但是如果主事務(wù)提交,則會攜帶子事務(wù)一起提交。如果主事務(wù)回滾,則子事務(wù)會一起回滾,相反,子事務(wù)異常,則父事務(wù)可以回滾或不回滾。(取決于父事務(wù))舉例:領(lǐng)導(dǎo)決策不對,領(lǐng)導(dǎo)怪罪,領(lǐng)導(dǎo)帶著小弟一同受罪。小弟出了差錯,領(lǐng)導(dǎo)可以推卸責(zé)任,或一起承擔(dān)。注冊登錄流程方法:用戶名是否存在自定義相應(yīng)數(shù)據(jù):IMOOCJSONResult類(common下的工具類)packagecom.imooc.utils;importcom.fasterxml.jackson.annotation.JsonIgnore;importcom.fasterxml.jackson.databind.ObjectMapper;/***@Description*@Authorzhangxin*@Date20230112**/publicclassIMOOCJSONResult{//定義jackson對象privatestaticfinalObjectMapperMAPPER=newObjectMapper();//相應(yīng)業(yè)務(wù)狀態(tài)privateIntegerstatus;//相應(yīng)消息privateStringmsg;//相應(yīng)中的數(shù)據(jù)privateObjectdata;@JsonIgnoreprivateStringok;//不使用publicIMOOCJSONResult(){}publicIMOOCJSONResult(Integerstatus,Stringmsg,Objectdata){this.status=status;this.msg=msg;this.data=data;}publicIMOOCJSONResult(Integerstatus,Stringmsg,Objectdata,Stringok){this.status=status;this.msg=msg;this.data=data;this.ok=ok;}publicIMOOCJSONResult(Objectdata){this.status=200;this.msg="OK";this.data=data;}publicstaticIMOOCJSONResultbuild(Integerstatus,Stringmsg,Objectdata){returnnewIMOOCJSONResult(status,msg,data);}publicstaticIMOOCJSONResultbuild(Integerstatus,Stringmsg,Objectdata,Stringok){returnnewIMOOCJSONResult(status,msg,data,ok);}publicstaticIMOOCJSONResultok(){returnnewIMOOCJSONResult(null);}publicstaticIMOOCJSONResulterrorMsg(Stringmsg){returnnewIMOOCJSONResult(500,msg,null);}//=====================get/set方法publicstaticObjectMappergetMAPPER(){returnMAPPER;}publicIntegergetStatus(){returnstatus;}publicvoidsetStatus(Integerstatus){this.status=status;}publicStringgetMsg(){returnmsg;}publicvoidsetMsg(Stringmsg){this.msg=msg;}publicObjectgetData(){returndata;}publicvoidsetData(Objectdata){this.data=data;}publicStringgetOk(){returnok;}publicvoidsetOk(Stringok){this.ok=ok;}}實(shí)體類:Users類(自動生成的,注意@Table(name="users")注解)packagecom.imooc.pojo;importjavax.persistence.Column;importjavax.persistence.Id;importjavax.persistence.Table;importjava.util.Date;/***表名:zyx-dev..users*表注釋:用戶表*/@Table(name="users")publicclassUsers{/***主鍵id用戶id*/@IdprivateStringid;/***用戶名用戶名*/privateStringusername;/***密碼密碼*/privateStringpassword;/***昵稱昵稱*/privateStringnickname;/***真實(shí)姓名真實(shí)姓名*/privateStringrealname;/***頭像頭像*/privateStringface;/***手機(jī)號手機(jī)號*/privateStringmobile;/***郵箱地址郵箱地址*/privateStringemail;/***性別性別*/privateIntegersex;/***生日生日*/privateDatebirthday;/***創(chuàng)建時間創(chuàng)建時間*/@Column(name="created_time")privateDatecreatedTime;/***更新時間更新時間*/@Column(name="updated_time")privateDateupdatedTime;/***獲取主鍵id用戶id**@returnid-主鍵id用戶id*/publicStringgetId(){returnid;}/***設(shè)置主鍵id用戶id**@paramid主鍵id用戶id*/publicvoidsetId(Stringid){this.id=id;}/***獲取用戶名用戶名**@returnusername-用戶名用戶名*/publicStringgetUsername(){returnusername;}/***設(shè)置用戶名用戶名**@paramusername用戶名用戶名*/publicvoidsetUsername(Stringusername){this.username=username;}/***獲取密碼密碼**@returnpassword-密碼密碼*/publicStringgetPassword(){returnpassword;}/***設(shè)置密碼密碼**@parampassword密碼密碼*/publicvoidsetPassword(Stringpassword){this.password=password;}/***獲取昵稱昵稱**@returnnickname-昵稱昵稱*/publicStringgetNickname(){returnnickname;}/***設(shè)置昵稱昵稱**@paramnickname昵稱昵稱*/publicvoidsetNickname(Stringnickname){this.nickname=nickname;}/***獲取真實(shí)姓名真實(shí)姓名**@returnrealname-真實(shí)姓名真實(shí)姓名*/publicStringgetRealname(){returnrealname;}/***設(shè)置真實(shí)姓名真實(shí)姓名**@paramrealname真實(shí)姓名真實(shí)姓名*/publicvoidsetRealname(Stringrealname){this.realname=realname;}/***獲取頭像頭像**@returnface-頭像頭像*/publicStringgetFace(){returnface;}/***設(shè)置頭像頭像**@paramface頭像頭像*/publicvoidsetFace(Stringface){this.face=face;}/***獲取手機(jī)號手機(jī)號**@returnmobile-手機(jī)號手機(jī)號*/publicStringgetMobile(){returnmobile;}/***設(shè)置手機(jī)號手機(jī)號**@parammobile手機(jī)號手機(jī)號*/publicvoidsetMobile(Stringmobile){this.mobile=mobile;}/***獲取郵箱地址郵箱地址**@returnemail-郵箱地址郵箱地址*/publicStringgetEmail(){returnemail;}/***設(shè)置郵箱地址郵箱地址**@paramemail郵箱地址郵箱地址*/publicvoidsetEmail(Stringemail){this.email=email;}/***獲取性別性別**@returnsex-性別性別*/publicIntegergetSex(){returnsex;}/***設(shè)置性別性別**@paramsex性別性別*/publicvoidsetSex(Integersex){this.sex=sex;}/***獲取生日生日**@returnbirthday-生日生日*/publicDategetBirthday(){returnbirthday;}/***設(shè)置生日生日**@parambirthday生日生日*/publicvoidsetBirthday(Datebirthday){this.birthday=birthday;}/***獲取創(chuàng)建時間創(chuàng)建時間**@returncreatedTime-創(chuàng)建時間創(chuàng)建時間*/publicDategetCreatedTime(){returncreatedTime;}/***設(shè)置創(chuàng)建時間創(chuàng)建時間**@paramcreatedTime創(chuàng)建時間創(chuàng)建時間*/publicvoidsetCreatedTime(DatecreatedTime){this.createdTime=createdTime;}/***獲取更新時間更新時間**@returnupdatedTime-更新時間更新時間*/publicDategetUpdatedTime(){returnupdatedTime;}/***設(shè)置更新時間更新時間**@paramupdatedTime更新時間更新時間*/publicvoidsetUpdatedTime(DateupdatedTime){this.updatedTime=updatedTime;}}Mapper類(自動生成的)packagecom.imooc.mapper;importcom.imooc.my.mapper.MyMapper;importcom.imooc.pojo.Users;publicinterfaceUsersMapperextendsMyMapper<Users>{}Mapper對應(yīng)的XML(自動生成的)<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.imooc.mapper.UsersMapper"><resultMapid="BaseResultMap"type="com.imooc.pojo.Users"><!--WARNING-@mbg.generated--><idcolumn="id"jdbcType="VARCHAR"property="id"/><resultcolumn="username"jdbcType="VARCHAR"property="username"/><resultcolumn="password"jdbcType="VARCHAR"property="password"/><resultcolumn="nickname"jdbcType="VARCHAR"property="nickname"/><resultcolumn="realname"jdbcType="VARCHAR"property="realname"/><resultcolumn="face"jdbcType="VARCHAR"property="face"/><resultcolumn="mobile"jdbcType="VARCHAR"property="mobile"/><resultcolumn="email"jdbcType="VARCHAR"property="email"/><resultcolumn="sex"jdbcType="INTEGER"property="sex"/><resultcolumn="birthday"jdbcType="DATE"property="birthday"/><resultcolumn="created_time"jdbcType="TIMESTAMP"property="createdTime"/><resultcolumn="updated_time"jdbcType="TIMESTAMP"property="updatedTime"/></resultMap></mapper>Service接口:packagecom.imooc.service;/***@Description*@Authorzhangxin*@Date20230112**/publicinterfaceUserService{/***功能描述:判斷用戶名是否存在**@returnvoid*@date2023/1/12*@params*/publicbooleanqueryUserNameIsExist(StringuserName);}Service實(shí)現(xiàn)類packagecom.imooc.service.impl;importcom.imooc.mapper.UsersMapper;importcom.imooc.pojo.Users;importcom.imooc.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importorg.springframework.transaction.annotation.Propagation;importorg.springframework.transaction.annotation.Transactional;importtk.mybatis.mapper.entity.Example;/***@Description*@Authorzhangxin*@Date20230112**/@ServicepublicclassUserServiceImplimplementsUserService{@AutowiredprivateUsersMapperusersMapper;@Transactional(propagation=Propagation.SUPPORTS)@OverridepublicbooleanqueryUserNameIsExist(StringuserName){ExampleuserExample=newExample(Users.class);Example.CriteriauserCriteria=userExample.createCriteria();userCriteria.andEqualTo("username",userName);Usersresult=usersMapper.selectOneByExample(userExample);returnresult==null?false:true;}}Api接口packagecom.imooc.controller;importcom.imooc.service.UserService;importcom.imooc.utils.IMOOCJSONResult;importmons.lang3.StringUtils;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;/***@Description*@Authorzhangxin*@Date20230112**/@RestController@RequestMapping("passport")publicclassPassportController{@AutowiredprivateUserServiceuserService;@GetMapping("/usernameIsExist")publicIMOOCJSONResultusernameIsExist(@RequestParamStringuserName){//1、判斷用戶名不能為空if(StringUtils.isBlank(userName)){returnIMOOCJSONResult.errorMsg("用戶名不能為空!");}//2、查詢用戶名是否存在booleanisExist=userService.queryUserNameIsExist(userName);if(isExist){returnIMOOCJSONResult.errorMsg("查詢用戶名已經(jīng)存在!");}returnIMOOCJSONResult.ok();}}PostMan測試:localhost:8088/passport/usernameIsExist?userName=imooc方法:添加用戶公共工具:common層自定義相應(yīng)數(shù)據(jù)結(jié)構(gòu)IMOOCJSONResult類packagecom.imooc.utils;importcom.fasterxml.jackson.annotation.JsonIgnore;importcom.fasterxml.jackson.databind.ObjectMapper;/***@Description*@Authorzhangxin*@Date20230112**/publicclassIMOOCJSONResult{//定義jackson對象privatestaticfinalObjectMapperMAPPER=newObjectMapper();//相應(yīng)業(yè)務(wù)狀態(tài)privateIntegerstatus;//相應(yīng)消息privateStringmsg;//相應(yīng)中的數(shù)據(jù)privateObjectdata;@JsonIgnoreprivateStringok;//不使用publicIMOOCJSONResult(){}publicIMOOCJSONResult(Integerstatus,Stringmsg,Objectdata){this.status=status;this.msg=msg;this.data=data;}publicIMOOCJSONResult(Integerstatus,Stringmsg,Objectdata,Stringok){this.status=status;this.msg=msg;this.data=data;this.ok=ok;}publicIMOOCJSONResult(Objectdata){this.status=200;this.msg="OK";this.data=data;}publicstaticIMOOCJSONResultbuild(Integerstatus,Stringmsg,Objectdata){returnnewIMOOCJSONResult(status,msg,data);}publicstaticIMOOCJSONResultbuild(Integerstatus,Stringmsg,Objectdata,Stringok){returnnewIMOOCJSONResult(status,msg,data,ok);}publicstaticIMOOCJSONResultok(){returnnewIMOOCJSONResult(null);}publicstaticIMOOCJSONResulterrorMsg(Stringmsg){returnnewIMOOCJSONResult(500,msg,null);}//=====================get/set方法publicstaticObjectMappergetMAPPER(){returnMAPPER;}publicIntegergetStatus(){returnstatus;}publicvoidsetStatus(Integerstatus){this.status=status;}publicStringgetMsg(){returnmsg;}publicvoidsetMsg(Stringmsg){this.msg=msg;}publicObjectgetData(){returndata;}publicvoidsetData(Objectdata){this.data=data;}publicStringgetOk(){returnok;}publicvoidsetOk(Stringok){this.ok=ok;}}調(diào)用方法:IMOOCJSONResult.errorMsg("XXX");MD5加密類:MD5Utils類packagecom.imooc.utils;importmons.codec.binary.Base64;importjava.nio.charset.StandardCharsets;importjava.security.MessageDigest;/***@DescriptionMD5加密*@Authorzhangxin*@Date20230112**/publicclassMD5Utils{/***功能描述:對字符串進(jìn)行MD5加密*@authorzhangxin*@date2023/1/12*@params*@returnjava.lang.String*/publicstaticStringgetMD5Str(StringstrValue)throwsException{MessageDigestmd5=MessageDigest.getInstance("MD5");Stringnewstr=Base64.encodeBase64String(md5.digest(strValue.getBytes(StandardCharsets.UTF_8)));returnnewstr;}publicstaticvoidmain(String[]args){try{Stringmd5=getMD5Str("aaa");System.out.println(md5);}catch(Exceptione){e.printStackTrace();}}}調(diào)用方法:MD5Utils.getMD5Str(XXX)枚舉:Sex類packagecom.imooc.enums;/***@Description性別枚舉*@Authorzhangxin*@Date20230113**/publicenumSex{woman(0,"女"),man(1,"男"),secret(2,"保密");publicfinalIntegertype;publicfinalStringvalue;Sex(Integertype,Stringvalue){this.type=type;this.value=value;}}調(diào)用方法:Sex.secret.type添加用戶:校驗(yàn)的實(shí)體類:UsersBOpackagecom.imooc.pojo.bo;/***@Description接收前端傳入的json*@Authorzhangxin*@Date20230112**/publicclassUsersBO{publicStringusername;privateStringpassword;privateStringconfirmPassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetConfirmPassword(){returnconfirmPassword;}publicvoidsetConfirmPassword(StringconfirmPassword){this.confirmPassword=confirmPassword;}}Service接口packagecom.imooc.service;importcom.imooc.pojo.Users;importcom.imooc.pojo.bo.UsersBO;/***@Description*@Authorzhangxin*@Date20230112**/publicinterfaceUserService{/***功能描述:判斷用戶名是否存在**@returnvoid*@date2023/1/12*@params*/publicbooleanqueryUserNameIsExist(StringuserName);/***功能描述:創(chuàng)建用戶*@authorzhangxin*@date2023/1/12*@paramsUsersBO傳入的json對象*@returncom.imooc.pojo.Users*/publicUserscreateUser(UsersBOusersBO);}Service實(shí)現(xiàn)類:packagecom.imooc.service.impl;importcom.imooc.enums.Sex;importcom.imooc.mapper.UsersMapper;importcom.imooc.pojo.Users;importcom.imooc.pojo.bo.UsersBO;importcom.imooc.service.UserService;importcom.imooc.utils.MD5Utils;importorg.n3r.idworker.Sid;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importorg.springframework.transaction.annotation.Propagation;importorg.springframework.transaction.annotation.Transactional;importtk.mybatis.mapper.entity.Example;importjava.util.Date;importjava.util.UUID;/***@Description*@Authorzhangxin*@Date20230112**/@ServicepublicclassUserServiceImplimplementsUserService{@AutowiredprivateUsersMapperusersMapper;/*@AutowiredprivateSidsid;*///創(chuàng)建用戶,默認(rèn)圖片privatestaticfinalStringUSER_FACE="";@Transactional(propagation=Propagation.SUPPORTS)@OverridepublicbooleanqueryUserNameIsExist(StringuserName){ExampleuserExample=newExample(Users.class);Example.CriteriauserCriteria=userExample.createCriteria();userCriteria.andEqualTo("username",userName);Usersresult=usersMapper.selectOneByExample(userExample);returnresult==null?false:true;}@Transactional(propagation=Propagation.REQUIRED)@OverridepublicUserscreateUser(UsersBOusersBO){Sidsid=newSid();Usersuser=newUsers();//user.setId(sid.nextShort());user.setId(UUID.randomUUID().toString().replace("-",""));user.setUsername(usersBO.getUsername());try{user.setPassword(MD5Utils.getMD5Str(usersBO.getPassword()));}catch(Exceptione){e.printStackTrace();}user.setNickname(usersBO.getUsername());user.setFace(USER_FACE);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省永州市祁陽市大村甸鎮(zhèn)中心學(xué)校2024-2025學(xué)年下學(xué)期期中監(jiān)測八年級下冊《物理》試卷(含答案)
- 建設(shè)工程施工總承包合同(知識研究版本)
- 沈陽職業(yè)技術(shù)學(xué)院《現(xiàn)代舞技術(shù)(2)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西醫(yī)學(xué)高等專科學(xué)校《人工智能學(xué)科前沿》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北省隨州市廣水市西北協(xié)作區(qū)2025年中考化學(xué)試題全練版含解析
- 遼寧金融職業(yè)學(xué)院《食品營養(yǎng)與衛(wèi)生實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東省濰坊市臨朐一中2025屆高三5月質(zhì)量監(jiān)測(最后一模)化學(xué)試題試卷含解析
- 山東省濟(jì)寧市魚臺縣2025年初三教學(xué)質(zhì)量監(jiān)測(一)語文試題理試卷含解析
- 江西中醫(yī)藥高等專科學(xué)?!东F醫(yī)微生物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《中醫(yī)經(jīng)典選讀一》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年糖尿病患者的護(hù)理發(fā)展趨勢
- 南京工業(yè)大學(xué)《材料現(xiàn)代測試方法》2022-2023學(xué)年第一學(xué)期期末試卷
- 西學(xué)中培訓(xùn)結(jié)業(yè)匯報(bào)
- 無人機(jī)運(yùn)輸合同模板
- 《詩經(jīng)》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2022年湖北武漢中考滿分作文《護(hù)他人尊嚴(yán)燃生命之光》
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- 某鋼結(jié)構(gòu)工程廠房、辦公樓施工組織設(shè)計(jì)方案
- 幼兒園課件:《動物的尾巴》
- 2024年刑法知識考試題庫【必考】
- DL∕T 1476-2023電力安全工器具預(yù)防性試驗(yàn)規(guī)程
評論
0/150
提交評論