一、 新建spring boot(war)项目

  • 创建springboot项目


环境配置:

  • IDEA 2022.3.3
  • JDK 1.8
  • Tomcat 8.5.35
  • Mysql 8.0.15
  • Docker Desktop 4.22.1

知识:

  • 使用lombok 注解自动生成getter,setter
  • mybatis 引用静态资源中的mapper/ mapper放到静态资源中,省去在pom里再次配置mapper的引入
  • 使用thymeleaf 访问template里的html和static里的静态资源(html中引入resources/static/index.js时注意格式:th:src="@{/index.js}" 是以static/作为引用资源css、js的根目录 )
  • 打包war

创建springboot项目

springboot子项目如何继承依赖_spring


springboot子项目如何继承依赖_tomcat_02


等待初始化,

配置maven

springboot子项目如何继承依赖_spring_03


springboot子项目如何继承依赖_springboot_04

项目工程结构

springboot子项目如何继承依赖_tomcat_05

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.15</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>testTomcatDocker</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>testTomcatDocker</name>
    <description>testTomcatDocker</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-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!--            使能访问template下的html-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

        <!-- mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>

        <!-- 其他依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

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

</project>

MyController.java

package com.example.testtomcatdocker.controller;

import com.example.testtomcatdocker.pojo.Student;
import com.example.testtomcatdocker.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class MyController {

    @Autowired
    StudentService studentService;
    @RequestMapping("/")
    public String home(){
        return "index";
    }
    @RequestMapping("/getStudents")
    @ResponseBody
    public List<Student> getStudent(){
        return studentService.getStudents();
    }
}

StudentDao.java

package com.example.testtomcatdocker.dao;

import com.example.testtomcatdocker.pojo.Student;

import java.util.List;

public interface StudentDao {
    List<Student> getStudents();
}

Student.java

package com.example.testtomcatdocker.pojo;

import lombok.Getter;
import lombok.Setter;

/**
 * 如果你想通过注释来自动生成Getter和Setter方法,可以使用Lombok库。Lombok是一个Java库,可以通过注解来简化Java类的编写。以下是使用Lombok自动生成Getter和Setter的步骤:
 *
 * 1. 在你的项目中添加Lombok依赖。如果使用Maven,可以将以下代码添加到`pom.xml`文件中:
 *
 * ```xml
 * <dependencies>
 *     <!-- 其他依赖 -->
 *     <dependency>
 *         <groupId>org.projectlombok</groupId>
 *         <artifactId>lombok</artifactId>
 *         <version>1.18.20</version>
 *         <scope>provided</scope>
 *     </dependency>
 * </dependencies>
 * ```
 *
 * 2. 在你的Java类中引入Lombok的`@Getter`和`@Setter`注解:
 *
 * ```java
 * import lombok.Getter;
 * import lombok.Setter;
 *
 * @Getter
 * @Setter
 * public class MyClass {
 *     // 属性声明
 * }
 * ```
 *
 * 3. 在属性声明上使用`@Getter`和`@Setter`注解,这样Lombok会自动生成对应的Getter和Setter方法。
 *
 * 现在,当你编译代码时,Lombok会自动在编译期间生成Getter和Setter方法,使你不需要手动编写这些方法,让你的代码更加简洁。
 *
 * 请注意,你可能还需要配置你的IDE以支持Lombok注解的自动完成和编译。具体方法请参考Lombok的官方文档或你所使用的IDE的相关文档。
 */
@Getter
@Setter
public class Student {
    private long id;
    private String name;
    private int age;
    private int sex;
}

StudentService.java

package com.example.testtomcatdocker.service;

import com.example.testtomcatdocker.pojo.Student;

import java.util.List;


public interface StudentService {
    List<Student> getStudents();
}

StudentServiceImpl.java

package com.example.testtomcatdocker.service;

import com.example.testtomcatdocker.dao.StudentDao;
import com.example.testtomcatdocker.pojo.Student;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class StudentServiceImpl implements StudentService{
    @Resource
    StudentDao studentDao;
    @Override
    public List<Student> getStudents() {
        return studentDao.getStudents();
    }
}

ServletInitializer.java

package com.example.testtomcatdocker;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(TestTomcatDockerApplication.class);
    }

}

TestTomcatDockerApplication.java 这个是入口,项目启动程序

package com.example.testtomcatdocker;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan(basePackages = {"com.example.testtomcatdocker.dao"})
@SpringBootApplication
public class TestTomcatDockerApplication {

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

}

axios.min.js 这个可以用cdn引入

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script src="https://unpkg.com/axios/dist/axios.min.js"></script>

element-ui-css.css , element-ui_v2-15-14.js cdn引入

<!-- 引入样式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <!-- 引入组件库 --> <script src="https://unpkg.com/element-ui/lib/index.js"></script>

favicon.ico 这个就是个小图标,随便找张小图改成这个名即可,,也可忽略这个

StudentMapper.xml

<?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.example.testtomcatdocker.dao.StudentDao">
  <select id="getStudents" resultType="com.example.testtomcatdocker.pojo.Student" >
    select * from student;
  </select>
</mapper>

vue.js cdn引入

<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script><script src="https://cdn.jsdelivr.net/npm/vue@2.7.14"></script>

index.html

<!DOCTYPE html>
<html>
<head>
    <title>获取学生信息示例</title>
    <link rel="icon" th:href="@{/favicon.ico}">
    <link rel="stylesheet" th:href="@{/element-ui-css.css}">

    <script type="text/javascript" src="./vue.js"></script>
    <script type="text/javascript" src="./element-ui_v2-15-14.js"></script>
    <script type="text/javascript" src="./axios.min.js"></script>

</head>
<body>
    <div id="app">
        <el-button @click="getStudentInfo" type="primary">获取学生信息</el-button>
        <el-table :data="students" style="width: 100%">
            <el-table-column prop="id" label="ID"></el-table-column>
            <el-table-column prop="name" label="姓名"></el-table-column>
            <el-table-column prop="age" label="年龄"></el-table-column>
            <el-table-column prop="sex" label="性别">
                <template slot-scope="scope">
                    {{ scope.row.sex === 1 ? '男' : '女' }}
                </template>
            </el-table-column>
        </el-table>
    </div>

<script>
    new Vue({
        el: '#app',
        data: {
            students: []
        },
        methods: {
            getStudentInfo() {
                axios.get('/getStudents')
                    .then(response => {
                        this.students = response.data;
                        this.$message.success("获取数据成功!")
                    })
                    .catch(error => {
                        console.error(error);
                    });
            }
        }
    });
</script>
</body>
</html>

application.properties 空着就好

application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testdocker0901?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
mybatis:
  mapper-locations: classpath*:static/**/*.xml


#  要将`StudentDao.xml`放到`resource/static`目录下,并使其能被MyBatis正确地加载,你需要执行以下步骤:
#
#  1. 确保你的项目结构中有`src/main/resources`目录。这是Maven和Gradle等构建工具中默认的资源目录。
#
#  2. 将`StudentDao.xml`文件移动到`src/main/resources`目录下的任意子目录中,例如`src/main/resources/mapper`。
#
#  3. 在你的MyBatis配置文件(通常是`application.properties`或者`application.yml`)中添加以下配置:
#
#  ```yaml
#  mybatis:
#    mapper-locations: classpath*:mapper/**/*.xml
#  ```
#
#  或者:
#
#  ```properties
#  mybatis.mapper-locations=classpath*:mapper/**/*.xml
#  ```
#
#  这个配置告诉MyBatis去`classpath`中查找`mapper`目录下的所有xml文件。
#
#  4. 确保你的代码中配置了`@MapperScan`注解,它告诉Spring扫描MyBatis的Mapper接口并将其实例化:
#
#  ```java
#  @MapperScan("com.your.package.mapper")
#  ```
#
#  将`com.your.package.mapper`替换为你的Mapper接口所在的包路径。
#
#  这样配置后,MyBatis将会自动识别并加载`StudentDao.xml`文件,并与对应的Mapper接口进行绑定。

mysql 数据库

testDocker.sql

/*SQLyog Ultimate v12.08 (64 bit)
MySQL - 8.0.15 : Database - testdocker0901
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`testdocker0901` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `testdocker0901`;

/*Table structure for table `student` */

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` varchar(10) NOT NULL COMMENT '学生姓名',
  `sex` tinyint(1) NOT NULL COMMENT '1男0女',
  `age` int(3) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

/*Data for the table `student` */

insert  into `student`(`id`,`name`,`sex`,`age`) values (1,'张三',0,23),(2,'李四',1,20),(3,'王五',1,22);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

启动项目后浏览器访问

http://localhost:8080

springboot子项目如何继承依赖_spring_06

打包

在使用 IntelliJ IDEA 和 Maven 进行项目打包时,可以按照以下步骤进行操作:

  1. 确保已经正确配置了 Maven 和相关的插件。
  2. 在 IntelliJ IDEA 中打开项目,确保项目的 pom.xml 文件正确配置了项目的依赖和插件。
  3. 在 Maven Projects 窗口中,展开你的项目,找到 Lifecycle 或者 Package 阶段,双击对应的命令执行打包操作。
  4. 或者,你也可以使用 Maven 的命令行工具进行打包。打开终端(或者命令提示符),切换到项目的根目录,然后运行以下 Maven 命令:

mvn package

这将触发 Maven 执行项目的打包操作。

在执行打包操作后,Maven 将会在项目的 target 目录中生成打包后的文件(例如 JAR 文件、WAR 文件等)。

注意:确保在打包前进行必要的配置,例如指定生成的文件名、指定要打包的类、资源文件等。可以在 pom.xml 文件中的 <build> 标签中进行相关配置。如果有特定的打包需求,可以使用 Maven 插件来进行更详细的定制。

以上是使用 IntelliJ IDEA 和 Maven 进行项目打包的一般方法。具体操作可能因项目和环境而有所不同,可以根据具体情况进行调整

springboot子项目如何继承依赖_数据库_07