Spring Boot 之路(一):一個簡單的Spring Boot應用

ywbjja發表於2018-12-22

SpringBoot之路(—)

一直在用Springboot做專案,但是像是趕鴨子上架一樣,並沒有系統的從頭到一個專案來建立一個應用,最近打算做一個SpringBoot開箱即用的專案,主要是覺得自己很菜,對於SpringBoot僅僅停留在會用的階段,所以想從零開始做一個想加強一下自己的理解。(其實就是菜)後期打算用VueSpringBoot專案做一個前後端分離的專案,Ui打算採用iView,用慣了Element想換種風格~但其實都差不多啦。

建立一個SpringBoot應用

本章就來介紹兩種方式來建立一個SpringBoot專案,根據Sping BOot官方文件的推薦,填好資訊後可以下載一個Zip檔案,然後解壓,在idea匯入就好了

Spring Boot 之路(一):一個簡單的Spring Boot應用
這裡推薦第二種直接使用idea的Sping Initializr來建立,如下圖

Spring Boot 之路(一):一個簡單的Spring Boot應用
選擇要使用的工具,這裡就先選擇WebMySQLMybatis,然後下一步就可以了。(沒有連線資料庫的話需要把pom.xml中的MySQL先註釋掉不然啟動會報錯)

Spring Boot 之路(一):一個簡單的Spring Boot應用
這是目錄結構

Spring Boot 之路(一):一個簡單的Spring Boot應用
開啟DemoApplication這個是SpingBoot的啟動類,其中@SpringBootApplication是一個配置類註解,它的作用像是@Configuration,@EnableAutoConfiguration,@ComponentScan這些註解的組合,@Configuration的作用是允許註冊額外的beans@ComponentScan的作用是啟動元件掃描,@EnableAutoConfiguration作用是啟動Sping Boot的自動配置。
然後我們新建一個Controller加上@RestController註解,@RestController註解在我們前後端分離開發中非常方便,因為我們目前的最好的是後端返回JSON資料然後給前臺來解析,當你使用了之後會發現非常之方便~
然後我們用PostMan來測試啟動下,header中選擇{key:Content-Type,value:application/json},body中選擇raw模式,然後傳送請求,可以看到hello,world就給我們返回來了。

Spring Boot 之路(一):一個簡單的Spring Boot應用

整合Mybatis連線資料庫

SpingBoot整合Mybatis也非常簡單隻需要在pom檔案中加入

<dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.2</version>
</dependency>
複製程式碼

整合Mysql:

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
</dependency>
複製程式碼

然後我們到application.properties中配置下連線資料庫的驅動這些

#連線MySQL
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
複製程式碼

然後新建一個mybatis的配置類:MybatisConfigurer

@Configuration
public class MybatisConfigurer {

    @Bean
    public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
        factory.setDataSource(dataSource);
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        factory.setMapperLocations(resolver.getResources("classpath:/Mapper/**/*Mapper.xml"));
        return factory.getObject();
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
        mapperScannerConfigurer.setBasePackage("com.ywbjja.demo");
        return mapperScannerConfigurer;
    }

}
複製程式碼

在配置檔案中配置了Mapper.xml的地址,Spring Boot會根據我們配置的地址去目錄下尋找Mapper.xml檔案,記得大小寫別錯了。
在資料庫中建立一個User表

CREATE TABLE `demo`.`user` (
  `user_id` BIGINT NOT NULL,
  `user_name` VARCHAR(45NOT NULL,
  PRIMARY KEY (`user_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COMMENT = '使用者表';
複製程式碼

然後新增一條資料測試:

Spring Boot 之路(一):一個簡單的Spring Boot應用
然後Mapper介面 Serviece類、我就不這裡寫了,Controller類的程式碼如下,

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/user/getUser")
    public User getUser(@RequestBody Map<String ,Object> map){
        return userService.queryUserById(map);
    }
}
複製程式碼

在這裡推薦是用Map作為引數,這樣很節省程式碼量,然後使用postman測試就會有結果了。

Spring Boot 之路(一):一個簡單的Spring Boot應用

0配置整合Mybatis

是不是覺得新建一個MybatisConfigurer很麻煩?沒問題,這裡推薦使用第二種方法就是0配置使用註解實現整合Mybatis,首先在Sping Boot的啟動類加入@MapperScan註解這個註解的作用就是會掃描這個目錄下的Mapper介面

@SpringBootApplication
@MapperScan(value = "com.ywbjja.demo")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
複製程式碼

然後再配置檔案中配置mapper.xml檔案地址

mybatis.mapper-locations=classpath*:Mapper/**/*Mapper.xml
複製程式碼

這樣一樣也能成功,省去了配置類,很方便了。好了到此就結束了,如果有錯誤的地方歡迎來噴我!!大聲的噴我!!!謝謝…
下一節打算說下SpringBoot統一返回物件以及異常的處理~

歡迎來關注我的微信公眾號~

Spring Boot 之路(一):一個簡單的Spring Boot應用

相關文章