-
封裝一個(gè)RedisOperator操作類(lèi)
40%
查看全部 -
<dependency> ???<groupId>org.springframework.boot</groupId> ???<artifactId>spring-boot-starter-redis</artifactId> </dependency>
application的redis配置,注意:timeout>0
@Autowired StringRedisTemplate
template.opsForValue.set("k1","v1")
template.opsForValue.get("k1")
對(duì)象轉(zhuǎn)Json
strNotice?=?new?ObjectMapper().writeValueAsString(notice)
json轉(zhuǎn)對(duì)象
Notice?notice2=new?ObjectMapper().readValue(strNotice2,Notice.class)
60%
查看全部 -
SpringBoot整合持久層事物
1、事物的隔離級(jí)別有多種,這里采用默認(rèn)的形式。
2、事物的傳播行為,這里主要使用REQUIRED和SUPPORTS。
REQUIRED:當(dāng)有一個(gè)操作需要執(zhí)行的時(shí)候,如果有事物,就會(huì)把當(dāng)前這個(gè)操作放入到事物中,如果沒(méi)有事物,那么就要新建一個(gè)事物,然后再去執(zhí)行(適用于增加、刪除、修改的操作)。
SUPPORTS:如果有事物,就把該操作加入當(dāng)前事物中執(zhí)行,如果沒(méi)有事物,就以脫離事物狀態(tài)去運(yùn)行(適合讀取操作)。
舉例:插入一個(gè)用戶(hù),之后產(chǎn)生一個(gè)除0異常,如圖。然后把該用戶(hù)的刪除狀態(tài)由0修改為1,然后再進(jìn)行修改。
通過(guò)查看:用戶(hù)是插入進(jìn)去了,但是沒(méi)有進(jìn)行修改,由于這個(gè)異常,所以這里需要回滾,所以這里需要使用事物。
這里只需要在執(zhí)行數(shù)據(jù)庫(kù)操作的方法上添加注解@Transactional,并且事物的傳播行為REQUIRED,此時(shí)就會(huì)發(fā)現(xiàn)沒(méi)有進(jìn)行插入,也就是事物進(jìn)行了回滾,這也就是事物的作用,要么一組操作全部成功,要不就都失敗。
拓展:SpringMVC事物的使用,需要在配置文件進(jìn)行配置,如下圖,針對(duì)特定方法的開(kāi)頭單詞進(jìn)行事物的操作。
查看全部 -
整合mybatis-pagehelper實(shí)現(xiàn)分頁(yè)
實(shí)現(xiàn)分頁(yè)的前提:第一個(gè)是當(dāng)前頁(yè)數(shù),第二個(gè)是每頁(yè)顯示多少條記錄數(shù),這里設(shè)置每頁(yè)記錄數(shù)為10條。
PageHelper的startPage(當(dāng)前頁(yè)數(shù),每頁(yè)顯示記錄數(shù))實(shí)現(xiàn)原理:查詢(xún)時(shí)有一個(gè)攔截,攔截后對(duì)sql語(yǔ)句進(jìn)行包裝(源碼如下),也就是每次執(zhí)行該方法時(shí),都是查詢(xún)指定數(shù)量記錄并進(jìn)行返回。
注意:這里需要注意如果當(dāng)前頁(yè)設(shè)置為0,會(huì)按當(dāng)前頁(yè)為第一頁(yè)來(lái)處理,如果傳過(guò)去的當(dāng)前頁(yè)大于最后一頁(yè),則會(huì)查詢(xún)最后一頁(yè)記錄并且返回。
查看全部 -
實(shí)現(xiàn)CRUD
首先,需要在項(xiàng)目的啟動(dòng)類(lèi)上添加@MapperScan(baskPackages="包路徑"),用來(lái)掃描該包下的映射類(lèi),也就是讓SpringBoot容器加載這些映射類(lèi)。
代碼演示:創(chuàng)建service及其實(shí)現(xiàn)類(lèi),并且接口中有如下方法。
通過(guò)查看userMapper(生成的插件),它其中擁有很多方法。
查看全部 -
SpringBoot整合持久層框架有很多:例如SpringJDBC、Hibernate、Mybatis(這里SpringBoot整合Mybatis時(shí),sql語(yǔ)句寫(xiě)在XML中,這種方式對(duì)于后期的維護(hù)、優(yōu)化等方面可讀性號(hào),所以這里就不采用注解形式,把sql語(yǔ)句寫(xiě)在實(shí)體類(lèi)中了)。
一、使用generatorConfig生成mapper以及pojo(SpringBoot官方提供了一套方法,這里使用一種更簡(jiǎn)潔的方式)。
步驟1:首先,需要引入一些依賴(lài),如下圖,有Mybatis、Mapper、Pagehelper,此外還需要引入數(shù)據(jù)源(這里使用阿里的druid)、mysql等等。
步驟2:如果想使用devtools熱部署,還需要在application.properties中引入如下兩段代碼(部署到生產(chǎn)環(huán)境中就不用添加了)。
步驟3:集成Mybatis Generator(這里不使用這種方式,使用更為簡(jiǎn)潔的方式)
這里的generateConfig.xml文件和SpringBoot官方提供的文件相似,需要注意的是這里使用Mybatis3Simple生成mapper的文件,這中方式比較簡(jiǎn)潔。
這里使用一個(gè)插件MyMapper來(lái)做的。
這里是數(shù)據(jù)庫(kù)配置信息。
生成pojo的包在如下圖進(jìn)行配置。
生成mapper的包在如下圖進(jìn)行配置。
映射類(lèi)放置在如圖中的位置。
最后設(shè)置逆向生成table的名字放置在如圖,一般這個(gè)名稱(chēng)設(shè)置為數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表名,這樣運(yùn)行程序時(shí),就會(huì)自動(dòng)逆向生成。
這里使用如圖下的類(lèi),來(lái)逆向生成,這里需要指定逆向生成的文件,在根目錄下的generateConfig.xml,運(yùn)行圖中的主方法就會(huì)反序列化生成。
啟動(dòng):它首先會(huì)找到那張表,再找到表中的字段,再逆向生成實(shí)體類(lèi),和mapper文件。
如圖:逆向生成的實(shí)體類(lèi),實(shí)體類(lèi)中的注釋就是數(shù)據(jù)庫(kù)中的注釋。
步驟4:application.properties配置,其中mybatis的pojo類(lèi)定義在tk.mybatis.springboot.model下,mapper文件在mapper文件夾下。還有通用Mapper配置,它是一個(gè)有效類(lèi),并且可以設(shè)置它的方言。這里還涉及分頁(yè)的配置,分頁(yè)使用的方言也是mysql
如果是application.yml配置就是用如下配置
步驟5:配置數(shù)據(jù)源
二、實(shí)現(xiàn)基于mybatis的CRUD功能。
三、整合mybatis-pagehelper實(shí)現(xiàn)分頁(yè)。
四、自定義mapper的實(shí)現(xiàn)。
github地址:第一個(gè)是課程項(xiàng)目源碼,第二個(gè)是Mybatis整合SpringBoot的框架。
查看全部 -
Web異常處理和ajax異常處理結(jié)合使用
步驟:只需要在后端進(jìn)行一個(gè)判斷,判斷該請(qǐng)求是否是ajax請(qǐng)求,如果是那么則以ajax異常方式處理,如果是web形式則以web異常處理形式處理即可。
查看全部 -
@JsonIgnore, 不返回該字段? @JsonFormat(...) 對(duì)時(shí)間格式進(jìn)行注解 ,? ?@JsonInclude(XXX)?
查看全部 -
@RestController= @Controller+ @ResponseBody
查看全部 -
捕獲ajax訪問(wèn)時(shí)的異常
@RestControllerAdvice:攔截異常并統(tǒng)一處理,它通常用于定義@ExceptionHandler, @InitBinder 和 @ModelAttribute 適用于所有@RequestMapping方法的方法,通過(guò)它就可以返回我們期望的異常返回格式,如果全部異常返回格式使用json,就可以使用該注解代替@ExceptionHanlder下的@ResponseBody注解。
@ControllerAdvice:攔截異常并統(tǒng)一處理,它通常用于定義@ExceptionHandler, @InitBinder 和 @ModelAttribute 適用于所有@RequestMapping方法的方法,通過(guò)它就可以返回我們期望的異常返回格式,注意:使用它時(shí)@ExceptionHandler必須和@ResponseBody一起結(jié)合使用。
@ExceptionHandler:自動(dòng)捕獲controller層出現(xiàn)的指定類(lèi)型異常,并對(duì)該異常進(jìn)行相應(yīng)的異常處理。
Exception的printStackTrace():打印該異常類(lèi)名、字符串信息和方法調(diào)用到異常拋出的軌跡。
Exception的getMessage():返回異常的字符串信息,也就是異常的構(gòu)造方法中的參數(shù)。如果是自定義異常,需要把字符串需要傳給父類(lèi)的構(gòu)造器,否則不會(huì)輸出信息。(除非自己定義這幾個(gè)方法)
注意:如果是自己定義的異常類(lèi)(繼承了Exception),字符串信息要傳給其父類(lèi)Exception的構(gòu)造器,否則
這里方法返回一個(gè)包裝類(lèi),通過(guò)包裝類(lèi)IMoocJSONResult把異常信息進(jìn)行返回。
頁(yè)面中加入debugger;運(yùn)行的時(shí)候相當(dāng)于產(chǎn)生一個(gè)端點(diǎn),谷歌瀏覽器下,F(xiàn)10可以繼續(xù)往下執(zhí)行,而且可以在右邊的watch中輸入想要查看的數(shù)據(jù)。?
查看全部 -
mybatis、mapper、pagehelper
查看全部 -
<!--freeMark依賴(lài)--> <dependency> ????<groupId>org.springframework.boot</groupId> ????<artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <!--ModelAndView--> <dependency> ????<groupId>org.springframework.boot</groupId> ????<artifactId>spring-boot-starter-web</artifactId> </dependency>
查看全部 -
server.port=8888
server.context-path="/app/cf"
查看全部 -
@Configuration
@ConfigurationProperties(prefix="com.cf.resouce.config")//配置項(xiàng)的前綴
@PropertySource(value="classpath:resource.properties")//配置文件路徑
查看全部 -
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
查看全部
舉報(bào)