spring boot day(1) hello world

一、idea创建spring boot项目

1.1 选择Spring initializr

在这里插入图片描述

1.2 修改项目名称

1.3 依赖选择

  • spring boot devtools
  • spring web
    在这里插入图片描述

1.4 编写controller

package com.example.helloworld.contoller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class helloController {
    
    
    @RequestMapping("/say")
    public String showHello(){
    
    
        return "hello world";
    }
}

1.5 运行HelloworldApplication

  • 右键:run HelloworldApplication
package com.example.helloworld;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloworldApplication {
    
    

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

在这里插入图片描述

1.6 8080,默认到login页面

  • 因为我们在 SpringBoot 项目中使用了 SpringSecurity

在这里插入图片描述

  • 用户名user,密码是项目启动给我们说的

1.7 进入login,访问"http://localhost:8080/hello/say"

在这里插入图片描述

二、遇到的错误

2.1 数据库未配置错误

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-11-21 18:19:38.935 ERROR 15048 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 
  • 问题原因

spring boot 会默认加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration这个类, 而DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean,又因为项目(oss模块)中并没有关于dataSource相关的配置信息,所以当spring创建dataSource bean时因缺少相关的信息就会报错。 解决办法:在@SpringBootApplication注解上加上exclude,解除自动加载DataSourceAutoConfiguration

  • 解决方法
@SpringBootApplication(exclude= {
    
    DataSourceAutoConfiguration.class})

2.2 拒绝连接

  • 之前的是name现在改成username
spring.datasource.username=root

2.3 Could not find acceptable representation

  • 实体类中没有get/set方法

三、spring boot mybatis

3.1 添加所需依赖

  • mysql是连接数据库需要的
 <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

3.2 数据库配置

# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=510363
# JDBC Driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JDBC URL
spring.datasource.url=jdbc:mysql://localhost:3306/world
#spring.datasource.url=jdbc:mysql://localhost:3306/world?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
#spring.datasource.url=jdbc:mysql://localhost:3306/db_student?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true

3.3 entity类

  • 与数据库中的表对应
package com.example.helloworld.entity;

public class Dog {
    
    
    String name;
    String age;
    int number;
    public Dog(String name, String age)
    {
    
    
        this.name = name;
        this.age = age;
    }

}

3.4 dao类

@Mapper
public interface DogMapper {
    
    
    @Select("select * from dog where number  = #{number}")
    public Dog findMsg(int number);
    @Delete("delete from dog where number = #{number}")
    public int DeleteMsg(int number);
    @Update("update dog set name=#{name} where number =  #{number}")
    public int updateMsg(String name, int number);
    @Insert("insert into dog(name,age) values(#{name},#{age})")
    public int insertMsg(Dog dog);
}

3.5 service类


@RestController
@ResponseBody
public class DogController {
    
    
    @Autowired
    DogMapper dogMapper;
    @RequestMapping("/getMsg/{id}")
    public Dog select(@PathVariable int id){
    
    
        Dog dog = dogMapper.findMsg(id);
        return dog;
    }
    @RequestMapping("/delMsg/{id}")
    public int delMsg(@PathVariable int id){
    
    
        int  number = dogMapper.DeleteMsg(id);
        return number;
    }
    @RequestMapping("/upMsg/{name}/{id}")
    public int UpMsg(@PathVariable String name, @PathVariable int id){
    
    
        int num = dogMapper.updateMsg(name, id);
        return num;
    }
    @RequestMapping("/insMsg/{name}/{age}")
    public int InsMsg(@PathVariable String name,@PathVariable String age){
    
    
        Dog dog = new Dog(name, age);
        int res = dogMapper.insertMsg(dog);
        return res;
    }
}

3.6 说明

  • select返回的是对象类
  • del返回的是0或者1
  • ins返回的是0或者1
  • update返回的是0或者1

3.7 分页功能的实现

  • 实现分页功能
  • Math.ceil():向上取整
  • Math.floor():向下取整
 public ArrayList<Dog> getPageMsg(@PathVariable("pageNum")int pageNum,@PathVariable("everyPageNum")int everyPageNum){
    
    
        //获取数据库总数
        int totalNumber = dogMapper.getMsgNumber();
        //每一页的数目
        int everyPageRealNumber;
        //计算查询的页数从第几个开始
        int start = everyPageNum * (pageNum - 1);
        //判断是不是最后一页,最后一页的数据数目不确定

        if(pageNum == (int)Math.ceil((float)totalNumber / (float)everyPageNum)){
    
    
            everyPageRealNumber = totalNumber - start;
        }else {
    
    
            everyPageRealNumber = everyPageNum;
        }
        System.out.println(totalNumber / everyPageNum);
        System.out.printf("当前页的页码:%d",pageNum);
        System.out.println();
        System.out.printf("数据表的数据总数为:%d",totalNumber);
        System.out.println();
        System.out.printf("当前页的起始页码:%d",start);
        System.out.println();
        System.out.printf("当前页的数据数量:%d",everyPageRealNumber);
        System.out.println();
        ArrayList<Dog> list = dogMapper.getPageMsg(start,everyPageRealNumber);
        return  list;
    }

在这里插入图片描述在这里插入图片描述

3.8 Arraylist数组中类对象排序

public class DogListSort {
    
    
    public static ArrayList<Dog> listSortUtil(ArrayList<Dog> dogs) {
    
    
        Collections.sort(dogs, new Comparator<Dog>() {
    
    
            @Override
            public int compare(Dog o1, Dog o2) {
    
    
                return o1.getNumber() - (o2.getNumber());
            }
        });
        return dogs;
    }

    public static void main(String[] args) {
    
    
        Dog dog = new Dog("jack","12",2);
        Dog dog1 = new Dog("rose","9",7);
        Dog dog2 = new Dog("jerry","19",5);
        Dog dog4 = new Dog("coos","19",9);
        Dog dog5 = new Dog("coos","19",1);
        Dog dog6 = new Dog("coos","19",29);
        ArrayList<Dog> doglist = new ArrayList<>(3);
        doglist.add(dog);
        doglist.add(dog1);
        doglist.add(dog2);
        doglist.add(dog4);
        doglist.add(dog5);
        doglist.add(dog6);
        ArrayList<Dog> list = listSortUtil(doglist);
        for(Dog dog3 : list){
    
    
            System.out.printf("%s,%s,%s",dog3.getAge(),dog3.getName(),dog3.getNumber());
            System.out.println();
        }
    }
}

在这里插入图片描述

四、其他安装

4.1 maven安装

参考:maven下载与安装

4.2 检测maven配置文件是否正确

mvn help:system

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42306803/article/details/121432768