Java架構師-技術專家-練習手冊-第01周_第1頁
Java架構師-技術專家-練習手冊-第01周_第2頁
Java架構師-技術專家-練習手冊-第01周_第3頁
Java架構師-技術專家-練習手冊-第01周_第4頁
Java架構師-技術專家-練習手冊-第01周_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java架構師-技術專家練習筆記開發(fā)工具:idea1、Idea創(chuàng)建project項目(前提:Java環(huán)境已經配好Maven已經安裝好)1、如果是已經打開的項目:File-New-Project如果是新打開的idea:直接選CreateNewProject創(chuàng)建新項目2、之后選擇Maven:3給項目起名字,然后點擊【finish】4:創(chuàng)建好的新項目:2、配置文件及添加相關工程1、打開【pom.xml】文件添加打包方式:<packaging>pom</packaging>添加子工程:選中工程-右擊:New-Module選擇:【Next】填寫名稱,點擊【Finish】子模塊添加成功!注意:子模塊默認打包方式:jar子模塊的層級結構:父類的【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)的即為父項目,根節(jié)點。點擊【install】進行安裝。顯示【BUILDSUCCESS】即為構建打包成功設置父項目pom基本配置-相關屬性及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>設置資源屬性:properties文件編碼格式File->Settings->Editor->Fileencodings-->設置編碼引入依賴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文件的相關配置在【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ù)源的相關配置type:com.zaxxer.hikari.HikariDataSource#數(shù)據(jù)源類型HikariCPdriver-class-name:com.mysql.jdbc.Driver#mysql驅動url:jdbc:mysql://localhost:16033/zyx?characterEncoding=utf8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNullusername:rootpassword:B@ojia56127!hikari:connection-timeout:30000#等待連接池分配連接的最大時長(毫秒),超過這個時長還沒可用的連接,則發(fā)生SQLException,默認30秒minimum-idle:5#最小連接數(shù)maximum-pool-size:20#最大連接數(shù)auto-commit:true#自動提交idle-timeout:600000#連接超時的最長時長(毫秒)超時則被釋放(retired)默認:10分鐘pool-name:DateSourceHikariCP#連接池名字max-lifetime:1800000#連接到生命時長(毫秒)超時而且沒被使用則被釋放(retired)默認:30分鐘1800000msconnection-test-query:SELECT1#連接測試查詢語句#######################################mybatis配置######################################mybatis:type-aliases-package:com.zyx.pojo#所有POJO類所在包路徑mapper-locations:classpath:mapper/*.xml#mapper映射文件Mybatis逆向生成目錄結構: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><!--對應生成的pojo所在包--><javaModelGeneratortargetPackage="com.imooc.pojo"targetProject="src/main/java"></javaModelGenerator><!--對應生成mapper所在目錄--><sqlMapGeneratortargetPackage="mapper"targetProject="src/main/resources"></sqlMapGenerator><!--配置mapper對應的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事務(Transactional)的傳播PropagationREQUIRED使用當前的事務,如果當前沒有事務,則自己新建一個事務,子方法是必須運行再一個事務中的;如果當前存在事務,則加入這個事務,成為一個整體。常用于:增刪改。舉例:領導沒飯吃,我有錢,我會自己買了自己吃;領導有的吃,會分給我一起吃。SUPPORTS如果當前有事務,則使用事務;如果當前沒有事務,則不使用事務。常用于查詢。舉例:領導沒飯吃,我也沒飯吃,領導有飯吃,我也有飯吃。MANDATORY該傳播屬性強制必須存在一個事務,如果不存在,則拋出異常。舉例:領導必須管飯,不管飯就沒飯吃,我就不樂意了,就不干了(拋出異常)REQUIRES_NEW如果當前有事務,則掛起該事務,并且自己創(chuàng)建一個新的事務,給自己用。如果當前沒有事務,則同REQUIRED舉例:領導有飯吃,我偏不要,我自己買飯吃。NOT_SUPPORTED如果當前有事務,則把事務掛起,自己不適用事務去運行數(shù)據(jù)庫操作。舉例:領導有飯吃,分了一點給我,但我太忙了,放一邊,我不吃。NEVER如果當前有事務存在,則拋出異常。舉例:領導有飯吃,我不想吃,我熱愛工作。(拋出異常)NESTED如果當前有事務,則開啟子事務(嵌套事務),嵌套事務是獨立提交或者回滾;如果當前沒有事務,則同REQUIRED但是如果主事務提交,則會攜帶子事務一起提交。如果主事務回滾,則子事務會一起回滾,相反,子事務異常,則父事務可以回滾或不回滾。(取決于父事務)舉例:領導決策不對,領導怪罪,領導帶著小弟一同受罪。小弟出了差錯,領導可以推卸責任,或一起承擔。注冊登錄流程方法:用戶名是否存在自定義相應數(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è)務狀態(tài)privateIntegerstatus;//相應消息privateStringmsg;//相應中的數(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;}}實體類: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;/***真實姓名真實姓名*/privateStringrealname;/***頭像頭像*/privateStringface;/***手機號手機號*/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;}/***設置主鍵id用戶id**@paramid主鍵id用戶id*/publicvoidsetId(Stringid){this.id=id;}/***獲取用戶名用戶名**@returnusername-用戶名用戶名*/publicStringgetUsername(){returnusername;}/***設置用戶名用戶名**@paramusername用戶名用戶名*/publicvoidsetUsername(Stringusername){this.username=username;}/***獲取密碼密碼**@returnpassword-密碼密碼*/publicStringgetPassword(){returnpassword;}/***設置密碼密碼**@parampassword密碼密碼*/publicvoidsetPassword(Stringpassword){this.password=password;}/***獲取昵稱昵稱**@returnnickname-昵稱昵稱*/publicStringgetNickname(){returnnickname;}/***設置昵稱昵稱**@paramnickname昵稱昵稱*/publicvoidsetNickname(Stringnickname){this.nickname=nickname;}/***獲取真實姓名真實姓名**@returnrealname-真實姓名真實姓名*/publicStringgetRealname(){returnrealname;}/***設置真實姓名真實姓名**@paramrealname真實姓名真實姓名*/publicvoidsetRealname(Stringrealname){this.realname=realname;}/***獲取頭像頭像**@returnface-頭像頭像*/publicStringgetFace(){returnface;}/***設置頭像頭像**@paramface頭像頭像*/publicvoidsetFace(Stringface){this.face=face;}/***獲取手機號手機號**@returnmobile-手機號手機號*/publicStringgetMobile(){returnmobile;}/***設置手機號手機號**@parammobile手機號手機號*/publicvoidsetMobile(Stringmobile){this.mobile=mobile;}/***獲取郵箱地址郵箱地址**@returnemail-郵箱地址郵箱地址*/publicStringgetEmail(){returnemail;}/***設置郵箱地址郵箱地址**@paramemail郵箱地址郵箱地址*/publicvoidsetEmail(Stringemail){this.email=email;}/***獲取性別性別**@returnsex-性別性別*/publicIntegergetSex(){returnsex;}/***設置性別性別**@paramsex性別性別*/publicvoidsetSex(Integersex){this.sex=sex;}/***獲取生日生日**@returnbirthday-生日生日*/publicDategetBirthday(){returnbirthday;}/***設置生日生日**@parambirthday生日生日*/publicvoidsetBirthday(Datebirthday){this.birthday=birthday;}/***獲取創(chuàng)建時間創(chuàng)建時間**@returncreatedTime-創(chuàng)建時間創(chuàng)建時間*/publicDategetCreatedTime(){returncreatedTime;}/***設置創(chuàng)建時間創(chuàng)建時間**@paramcreatedTime創(chuàng)建時間創(chuàng)建時間*/publicvoidsetCreatedTime(DatecreatedTime){this.createdTime=createdTime;}/***獲取更新時間更新時間**@returnupdatedTime-更新時間更新時間*/publicDategetUpdatedTime(){returnupdatedTime;}/***設置更新時間更新時間**@paramupdatedTime更新時間更新時間*/publicvoidsetUpdatedTime(DateupdatedTime){this.updatedTime=updatedTime;}}Mapper類(自動生成的)packagecom.imooc.mapper;importcom.imooc.my.mapper.MyMapper;importcom.imooc.pojo.Users;publicinterfaceUsersMapperextendsMyMapper<Users>{}Mapper對應的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實現(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("查詢用戶名已經存在!");}returnIMOOCJSONResult.ok();}}PostMan測試:localhost:8088/passport/usernameIsExist?userName=imooc方法:添加用戶公共工具:common層自定義相應數(shù)據(jù)結構IMOOCJSONResult類packagecom.imooc.utils;importcom.fasterxml.jackson.annotation.JsonIgnore;importcom.fasterxml.jackson.databind.ObjectMapper;/***@Description*@Authorzhangxin*@Date20230112**/publicclassIMOOCJSONResult{//定義jackson對象privatestaticfinalObjectMapperMAPPER=newObjectMapper();//相應業(yè)務狀態(tài)privateIntegerstatus;//相應消息privateStringmsg;//相應中的數(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;}}調用方法:IMOOCJSONResult.errorMsg("XXX");MD5加密類:MD5Utils類packagecom.imooc.utils;importmons.codec.binary.Base64;importjava.nio.charset.StandardCharsets;importjava.security.MessageDigest;/***@DescriptionMD5加密*@Authorzhangxin*@Date20230112**/publicclassMD5Utils{/***功能描述:對字符串進行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();}}}調用方法: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;}}調用方法:Sex.secret.type添加用戶:校驗的實體類: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實現(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)建用戶,默認圖片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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論