Springboot整合——创建一个项目并打通前后端

1.创建一个SpringBoot项目

参考博客:https://www.cnblogs.com/worthmove/p/16677878.html

2.完善文件结构

在新建项目基础上我们把文件结构完善成这个样子

 

 3.新建数据库及其表文件

这部分不做过多介绍,新建的表结构如下:

 

 4.完善pom.xml文件中的依赖

自动生成的pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>bootdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>bootdemo</name>
    <description>bootdemo</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

我们在此基础上增加如下依赖:

分别为Mybatis相关依赖以及Mysql相关依赖。

<dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>2.2.2</version> 
</dependency>

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

5.在application.properties中添加数据库数据源等设置

#驱动的设置可以省略,sb内部会根据数据库自动设置启动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/example
spring.datasource.username=root
spring.datasource.password=root

#设置别名,mapper.xml中就不需要再写全路径名了
mybatis.type-aliases-package=com.example.bean 
#设置mapper.xml文件的路径
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
#设置tomcat端口号,默认是8080
server.port=8080

 6.新建AppConfig类,作为Spring IOC容器

创建路径为com.example。

因为我们可以用@SpringBootApplication下的@ComponentScan注解来自动将@Controller、@Service等类注册为bean。所以这个类暂时用不到。

@Configuration
public class AppConfig {
}

7.创建bean类

com.example.bean下创建Books类,代码如下:

package com.example.bean;

public class Books {

    private int bookId;
    private String bookName;
    private int bookCount;
    private String detail;

    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public int getBookCount() {
        return bookCount;
    }

    public void setBookCount(int bookCount) {
        this.bookCount = bookCount;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }
}

8.创建BookMapper接口

在com.example.dao文件下创建BookMapper接口,代码如下:

@Mapper
@Repository(这里也可以使用@Component)
public interface BookMapper { int addBook(Books book); List<Books> getAllBooks(); Books getBookById(int bookId); int deleteBook(int bookId); int updateBook(Books book); }

@Mapper注解是由Mybatis框架中定义的一个描述数据层接口的注解,注解往往起到的都是一个描述性作用,用于告诉sprigng框架此接口的实现类由Mybatis负责创建,并将其实现类对象存储到spring容器中。

9.创建BookMapper.xml文件

 在Resources/mybatis/mapper/文件夹下新建BookMapper.xml文件,这里要注意的是,创建文件夹时mybatis.mapper这个文件夹一定要分层创建,不能创建一个文件夹直接写mybatis.mapper,这样就成了一个文件夹叫这个名字而不是分级目录了,内容如下:

<?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">

<!--  这里的namespace是BookMapper接口所在路径-->
<mapper namespace="com.example.dao.BookMapper">
    <!-- 这里Books不用写路径时因为设置了别名 -->
    <!-- 这个方法的返回值为int,是基本类型所以不用resultType参数,引用类型需要用-->
    <insert id="addBook" parameterType="Books">
        insert into example.books(bookName,bookCounts,detail)
            values (#{bookName},#{bookCounts},#{detai});
    </insert>

    <delete id="deleteBook" parameterType="Integer">
        delete from example.books where bookId = #{id};
    </delete>

    <update id="updateBook" parameterType="Books">
        update example.books
           set
               <if test="bookName != null">
                   bookName = #{bookName}
               </if>
               <if test="bookName != null">
                   ,bookCounts = #{bookCounts}
               </if>
               <if test="bookName != null">
                   ,detail = #{detail}
               </if>
         where bookId = #{bookId};
    </update>

    <select id="getBookById" parameterType="int" resultType="Books">
        select * from example.books where bookId = #{id};
    </select>

    <select id="getAllBooks" resultType="Books">
        select * from example.books;
    </select>

</mapper>

10.创建service层的类

 service接口代码如下:

public interface BookService {

    int addBook(Books book);

    List<Books> getAllBooks();

    Books getBookById(int bookId);

    int deleteBook(int bookId);

    int updateBook(Books book);

}

service接口实现类代码如下:

@Service("bookService")
public class BookServiceImpl implements BookService{

    @Autowired
    private BookMapper bookMapper;


    public int addBook(Books book) {
        return bookMapper.addBook(book);
    }

    public List<Books> getAllBooks() {
        return bookMapper.getAllBooks();
    }

    public Books getBookById(int bookId) {
        return bookMapper.getBookById(bookId);
    }

    public int deleteBook(int bookId) {
        return bookMapper.deleteBook(bookId);
    }

    public int updateBook(Books book) {
        return bookMapper.updateBook(book);
    }
}

11.创建controller层的类

@RestController
@RequestMapping("/book")
public class BookController {

    //@Autowired是按照类型来注入的;@Qualifier是按照名称来注入的,本属性是与@Service对应来使用的
    //如果是用xml或者类的方式而不是用扫描的话,会有name属性和类名的
    @Autowired
    @Qualifier("bookService")
    private BookService bookService;

    @RequestMapping("/getBooks")
    public List<Books> getBooks() {
        return bookService.getAllBooks();
    }

}

12.在浏览器中尝试运行

 

posted @ 2022-09-16 17:57  一直学习的程序小白  阅读(401)  评论(0编辑  收藏  举报