1. 程式人生 > >spring-boot起步介紹Demo,廖師兄springboot學習筆記

spring-boot起步介紹Demo,廖師兄springboot學習筆記

在慕課網上面學習了廖師兄的spring-boot 2小時入門的課程,為了防止忘記,這裡記了一些筆記和一些想法。可以轉載,請轉載的時候註明以上資訊即可。

一、使用IDEA

  • 新建專案 new project
  • Spring Initializr



  • 目錄解釋:
    • templates自動生成,放著spring-boot的模版,現在都是前後端分離,一般不用這個,這個效能不好,就算是寫jsp也不用模版
    • application.properties是配置檔案,建議使用.yml檔案,簡單不說格式還很舒服
    • TestApplication main方法啟動服務
    • 其他的都一眼看懂了
  • 除了main方法啟動,windows和linux都可以使用命令列啟動
    ,本地是windows的,所以進入專案目錄內通過 mvnw.cmd spring-boot:run啟動,linux應該直接mvn……即可,網上可以查閱

二、配置檔案


    server:
      port: 8080  #埠 預設是8080
      context-path: /man #requestMapping一樣,首路徑攔截
    user:
      cupSize: B # 業務中可以通過 @Value("${girl.age}")
      age: 18
      # 如果需要注入到物件中,則在物件中增加@ConfigurationProperties(prefix = "user") 字首是user
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/test driver-class-name: com.mysql.jdbc.Driver username: root password: root jpa: show-sql: true #列印sql語句 hibernate: ddl-auto: update #create 每次啟動都新建表 #update 每次判斷是否存在,不刪除原有資料,最常用
#create-drop 應用停止就刪除表 #none沒有操作 #validate 驗證是否一致,不一致報錯

三、pom.xml檔案

  • 預設生成的包含了web和test以及一個manven外掛
  • 其他的:jpa和mysql是和資料庫相關

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

四、實體類,專案啟動自動建表(配置檔案)


    @Entity
    public class Man {
        @Id
        @GeneratedValue
        private Integer id;  // 主鍵,自動增長

        private String name;

        public Man() {  // 必須需要一個構造方法
        }

        getset方法
    }

五、sql實現層程式碼,是個介面

    // controller @autowired使用
    public interface ManRepository extends JpaRepository<Man, Integer> {

        List<Man> findByName(String name);
    }
  • 繼承JpaRepository即可,< Man,Integer> Man是要查詢的實體類,Integer是主鍵的型別
  • findByName是自己除了增刪改查新增的方法,這裡的格式要求嚴格,findBy…

六、controller程式碼,@PathVariable restful風格{id}獲得這個id

    @RestController
    public class ManController {
        @Autowired
        private ManRepository manRepository;  // 繼承jpa的介面,使sql變得非常簡單

        /**
         * 查詢所有
         * @return
         */
        @GetMapping(value = "/mans")            // get方法
        public List<Man> manList(){
            return manRepository.findAll();     // 預設就有的方法
        }

        /**
         * 新增一個
         */
        @PostMapping(value = "mans")            // post方法
        public Man manAdd(@RequestParam("name")String name){
            Man man = new Man();
            man.setName(name);

            return manRepository.save(man);     // 預設就有的方法
        }

        /**
         * 更新(如果id不存在則add,存在則update)
         */
        @PutMapping("/mans/{id}")               // put方法
        public Man manUpdate(@PathVariable(value = "id")Integer id,
                              @RequestParam("name")String name){
            Man man = new Man();
            man.setName(name);
            man.setId(4);

            return manRepository.save(man);     // 預設就有的方法
        }

        /**
         * 刪除
         */
        @DeleteMapping("/mans/{id}")        // delete方法
        public void manDelete(@PathVariable(value = "id")Integer id){
            manRepository.delete(id);       // 預設就有的方法
        }

        /**
         * 主鍵查詢
         */
        @GetMapping(value = "/findById/{id}")
        public Man findById(@PathVariable(value = "id")Integer id){
            return manRepository.findOne(id);       // 預設就有的方法
        }

        /**
         * 其他條件查詢
         */
        @RequestMapping(value = "/findByName/{name}")
        public List<Man> findByName(@PathVariable(value = "name")String name){
            return manRepository.findByName(name);      // 自己擴充套件的方法
        }
        @Autowired
        private ManServer manServer;  // 測試事務用,很簡單的一個小方法
        /**
         * 事務處理
         */
        @RequestMapping(value = "two")
        public void two(){
            manServer.insertTwo();
        }

七、業務層程式碼

    @Service
    public class ManServer {

        @Autowired
        private ManRepository manRepository;

        @Transactional                  // 業務,只要是增刪改都建議用
        public void insertTwo(){
            Man a = new Man();
            Man b = new Man();
            a.setName("1");
            b.setName("2");

            manRepository.save(a);
    //        int i = 0;
    //        System.out.println(0/i);  // 報錯業務測試
            manRepository.save(b);
        }
    }

八、模版

  • 一般是不建議用,比較佔用記憶體不說,現在都是前後端分離,用jsp都行。
  • pom引入

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  • templates裡面增加index.html
  • html裡面什麼都不用寫,要清空否則報錯。然後直接寫各種程式碼即可
  • 直接在controller裡面和springmvc一樣返回String即可

九、IDEA必須是旗艦版才能使用這個,eclipse安裝外掛才行,很久不用eclipse了,就不亂說了。