Spring Boot企業微信點餐系統學習心得
技術標籤:JAVA學習筆記javamybatis資料庫spring boot
Spring Boot企業微信點餐系統學習心得
Java基礎補充
-
for-each語法
for (int data: res) { System.out.println(data); }
-
建立List,List只是一個介面,不能被例項化
List<int> intList = new ArrayList<>();
-
建立一個異常類
public class SellException extends RuntimeException{ private Integer code;
-
只要不是同一個函式,就能相互呼叫,甚至過載函式直接return另一個形式
-
新建一個BigDecimal必須傳入數值哦,可以寫new BigDecimal(0);或者new BigDecimal(BigInteger.ZERO);
-
精確的數字BigDecimal做加減乘除都有自己的函式
-
生成id要加上synchronized關鍵字,防止多執行緒導致錯位
-
CollectionUtils.isEmpty(orderDetailList)判斷陣列是否為空
註解補充
-
@Autowired自動注入。測試的時候別忘了對Service的impl加上自動注入,直接new一下是得不到的
-
@RestController表示這個類是一個Controller,並且可以接收json資料
-
@RequestMapping修飾Controller類的時候,作用是先建立一個大的路由作為url字首
-
@Mapper表示這是一個mapper,即資料庫增刪改查
-
@Slf4j安裝了lombok外掛同時匯入了依賴,就不用寫logger物件了,直接使用log.info之類的方法
-
@DynamicUpdate可以實時更新資料庫時間,前提是你設定了自動設定時間
-
@Configuration表示這個類是起配置作用的
-
@Bean
-
@JsonProperty(“name”)對VO修飾,表示這個屬性名稱傳到前端是name
-
@Transactional是給函式加上事務回滾的功能
-
@Transient註解會在自動匹配欄位的時候忽略掉這個屬性
-
@Validated OrderForm orderForm,BindingResult bindingResult可以使用OrderForm這個類傳遞引數,也可以寫成RequestBody
-
@JsonSerialize(using=xxx.class)可以直接把某個屬性轉化為想要的型別,例如
https://blog.csdn.net/weixin_40388298/article/details/88634100
-
@JsonInclude(JsonInclude.Include.NON_NULL),這個類返回給前端的json資料不包含null欄位,全域性配置直接去配置檔案裡寫jackson de…-pro…-inclusion: not_null
-
@RunWith(SpringRunner.class) @SprintBootTest 測試類名 @Test 測試方法
Spring補充
-
Controller方法中引數新增@RequestBody()使用一個類來接收json資料,就不用一點點寫@RequestParams了,注意欄位要與json一致
-
單元測試的時候,直接右鍵Go to->Test
-
層級任務
config--配置檔案類 controller--對資料的展現,邏輯在service層寫,不要寫在controller層 service--放置主要邏輯的地方,Seivice層是給Controller層呼叫的 impl--是service子資料夾,實現service定義的函式 mapper(dao)--對資料庫增刪改查 pojo--實體類 VO--檢視管理器,傳資料給前端 DTO--是資料傳輸物件 utils--工具類 enums--放置列舉型別 exception--放置錯誤型別 converiter--用於資料轉化建立的類
-
學到了一個新的東西,檢視管理器VO,建立一個類,然後宣告屬性,返回這個類,就構成了json格式
-
@JsonProperty(“name”)註解,將字元序列化,即傳到前端的json欄位是name,而不是類中的categoryName屬性
-
VO可以巢狀,就類似json格式資料巢狀,直接把一個VO丟到另一個VO中就歐克
@RestController //可以接收json @RequestMapping("/buyer/product") //url字首 public class BuyerProductController { @GetMapping("/list") //訪問http://localhost:8080/sell/buyer/product/list public ResultVO list(){ ResultVO resultVO = new ResultVO(); ProductVO productVO = new ProductVO(); ProductInfoVO productInfoVO = new ProductInfoVO(); productVO.setProductInfoVOList(Arrays.asList(productInfoVO)); resultVO.setData(Arrays.asList(productVO)); resultVO.setCode(0); resultVO.setMeg("成功"); return resultVO; } }
-
impl實現Service的介面的時候要加上@Service註解,否則提示找不到Bean
Mybatis補充
-
Mybatis一定一定是寫無參構造方法!!!即不寫構造方法
-
記得寫@Mapper註解
-
開啟資料庫命名規範與Java命名規範有兩種形式,寫配置類或者改配置檔案
mybatis: configuration: map-underscore-to-camel-case: true
-
設定id自增,在傳資料的時候就不用把id傳進去了
-
mapper的sql必須是函式裡的引數,否則找不到
-
前端傳過來商品id和數量,你去資料庫查相關商品資訊,然後寫入訂單情況,這是資料庫關聯的
其他工具
-
Gson可以很方便的將字串與json轉換(寫個物件去接收json資料)
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency>
-
lombok外掛和依賴,可以加上@Data註解不寫getter、setter、tostring還有配置logback不用例項化logger
<dependence> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependence>
-
BeanUtils.copyProperties(productInfo,productInfoVO);可以複製屬性,但是隻有同名的屬性才能複製,把前面的複製到後面的去。
-
postman 使用get方法的時候要在Params上加引數,Post方法在Body加引數
相關依賴
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- Gson-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<!-- 資料庫依賴-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- 測試用的-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
配置檔案
有時候配置檔案不對也會報錯,例如中文全變成了"?",例如時區有問題,遇到問題不要慌,先百度一下
application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/sell?characterEncoding=utf-8&useSSL=false
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--給類起別名-->
<typeAliases>
<typeAlias type="com.example.demo.pojo.Veg" alias="Veg"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/sell?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>