Springboot之基本使用

Spring Boot

启动

  • springboot项目不同于Servlet的Web项目,本质上是一个Java应用程序,不需要手动启动Tomcat,而是通过java类的主方法,因为这个类把Tomcat嵌入去了打包方式为jar或者war

配置文件

  1. 位于src/main/resources/application.properties,也可在idea指定配置文件的文件名(Envirnment variables)
  2. 支持多配置文件,可以切换不同配置文件
  • properties

    #配置端口上下文
    server.port=8888
    server.context-path=/test
    
    #配置数据库链接参数
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ksea?characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    # 引入jsp,重定向
    spring.mvc.view.prefix=/WEB-INF/jsp/
    spring.mvc.view.suffix=.jsp
    

一些常用的注解

@SpringBootApplication:该注解表明这是一个Springboot应用
@RestControllerspring:MVC一个控制器注解,为@ResponseBody和@Controller的缩写
@Controller:处理http请求,返回的不是字符串而是根据application.properties 中的视图重定向
@RequestMapping:配置url映射,即访问什么路径时拦截起效
@AtuoWried:注入


热部署

  • springboot修改后必须重启才能生效,应用了热部署后当任何类修改后马上通过JVM类加载的方式,不需要重启也可以看到修改后的效果
  • 添加maven的一个依赖和一个插件
    接着修改IDEA的设置才可以生效:
    1-File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Build project automatically”
    2-组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running”
  1. 依赖

    <!--热部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
    </dependency>
    
  2. 插件

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    

对于jsp的支持

  • 添加相关maven的依赖

    <!--jsp页面使用jstl标签-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    
    <!--tomcat依赖,用于编译jsp-->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    
  • 编辑配置文件

    ps:在src/main/resources 目录下增加 application.properties文件,用于视图重定向jsp文件的位置。内容为配置返回文件的路径以及类型

    #重定向
    spring.mvc.view.prefix: /WEB-INF/jsp/
    spring.mvc.view.suffix: .jsp
    
  • jsp文件存放于web文件夹时会报错,webapp正常


持久层支持(操作数据库)

JPA

特点:自动建表,内置sql语句,通过dao层调用即可
流程:配置pom添加相关依赖-配置文件中配置数据库-建立pojo实体类-建立dao层接口-建立控制器
注解:@Entity,@Table,@Column,@GenneratedValue
父类:JpaRepository
配置:配置文件中配置数据库,配置url,username,password,driver-class-name,开启自动生成表

  • pom配置

        <!-- mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.21</version>
            </dependency>
    
            <!-- jpa-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
  • pojo类

  1. 添加注解@Entity表明为实体,@Table(name="")指定相关表

  2. 对于变量用@Column指定数据库中变量对应的列名称,设置列的属性(是否自增长等)

    @Entity
    @Table(name = "category")
    public class Category {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        private int id;
    
        @Column(name = "name")
        private String name;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
  • dao接口
  1. 继承JpaRepository

    public interface CategoryDAO extends JpaRepository<Category,Integer>{}
    
  • controller类
  1. 使用@Controller注解表明是一个控制器

  2. 通过@Autowired把DAO层注入

  3. 使用@RequestMapping("url")拦截映射url

  4. 通过相关Dao调用

    @Controller
    public class CategoryController {
        @Autowired
        CategoryDAO categoryDAO;
    
        @RequestMapping("/listCategory")
        public String listCategory(Model model){
            List<Category> categoryList = categoryDAO.findAll();
            model.addAttribute("categoryList",categoryList);
            return "listCategory";
        }
    }
    

Mybatis-注解

特点:自由编写sql语句,通过注解使用
流程:配置pom添加相关依赖-配置文件中配置数据库-建立pojo实体类-建立mapper接口-建立controller类
注解:@Mapper,@Select,@Insert,@Update,@Delete

  • properties配置
  1. 配置文件中配置数据库,配置url,username,password,driver-class-name

    #数据库配置
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ksea?characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
  • pom配置
     <!-- mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>
  • pojo类
  1. 普通实体类,变量即可,无需注解

    public class Category {
        private int id;
        private String name;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
  • mapper接口
  1. @Mapper接口表明

  2. @Select("sql")注解用于方法上,通过controller调用该方法即可调用相关注解的sql

    @Mapper
    public interface CategoryMapper {
        @Select("select * from category")
        List<Category> findAll();
    }
    
  • controllre类
  1. 注解dao层,通过dao层调用注解了的sql方法

    @Controller
    public class CategoryController {
        @Autowired
        CategoryMapper categoryMapper;
    
        @RequestMapping("/listCategory")
        public String listCategory(Model m) throws Exception {
            List<Category> cs=categoryMapper.findAll();
    
            m.addAttribute("cs", cs);
    
            return "listCategory";
        }
    }
    

Mybatis-xml

特点:自由编写sql,结合xml
流程:配置pom添加相关依赖-pom中配置xml路径-配置文件中配置数据库-配置文件中配置数据库xml路径-建立pojo实体类-建立mapper接口-建立mapper对应的xml-建立controller类
注解:@Mapper

  • 常见错误
  1. 报500,找不到mapper,未能在pom和properties中的文件中正确配置mapper.xml的路径
  • properties
  1. 配置重定向

  2. 配置文件中配置数据库,配置url,username,password,driver-class-name

  3. 配置mybatis的xml路径

    #重定向
    spring.mvc.view.prefix=/WEB-INF/jsp/
    spring.mvc.view.suffix=.jsp
    
    #数据库配置
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ksea?characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    #配置mybatis的xml路径
    mybatis.mapper-locations=classpath:com/ksea/mapper/*.xml
    mybatis.type-aliases-package=com.ksea.pojo
    
  • pom配置
  1. 这里也要配置一下xml路径,我也不懂 qaq

  2. 导入数据库依赖

    #依赖
    <!-- mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>
    <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
    
    #xml路径
    <build>
        <!--xml路径配置-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
        </resource>
        </resources>
    </build>
    
  • pojo实体类
  • mapper接口
  • mapper.xml
  1. namespace="",指定相关Mapper接口位置

  2. id="",通过id和sql相关方法关联,resultType="",指定返回类型

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
        <mapper namespace="com.ksea.mapper.CategoryMapper">
            <select id="findAll" resultType="Category">
                select * from category
            </select>
        </mapper>
    
  • controller控制类

单元测试

特点:不需要全项目测试,单独测试某一功能
流程:pom中添加相关依赖-编写测试类
注解:@RunWith(SpringRunner.class),@SpringBootTest(classes = Application.class),@Test


posted @ 2020-01-17 15:58  喜欢数学也爱代码  阅读(400)  评论(0)    收藏  举报