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.bootgroupId>
        <artifactId>spring-boot-starter-data-jpaartifactId>
    dependency>

    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
    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 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 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 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.bootgroupId>
        <artifactId>spring-boot-starter-thymeleafartifactId>
    dependency>
  • templates里面增加index.html
  • html里面什么都不用写,要清空否则报错。然后直接写各种代码即可
  • 直接在controller里面和springmvc一样返回String即可

九、IDEA必须是旗舰版才能使用这个,eclipse安装插件才行,很久不用eclipse了,就不乱说了。

你可能感兴趣的:(springboot)