一、 新建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项目
等待初始化,
配置maven
项目工程结构
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
打包
在使用 IntelliJ IDEA 和 Maven 进行项目打包时,可以按照以下步骤进行操作:
- 确保已经正确配置了 Maven 和相关的插件。
- 在 IntelliJ IDEA 中打开项目,确保项目的 pom.xml 文件正确配置了项目的依赖和插件。
- 在 Maven Projects 窗口中,展开你的项目,找到 Lifecycle 或者 Package 阶段,双击对应的命令执行打包操作。
- 或者,你也可以使用 Maven 的命令行工具进行打包。打开终端(或者命令提示符),切换到项目的根目录,然后运行以下 Maven 命令:
mvn package
这将触发 Maven 执行项目的打包操作。
在执行打包操作后,Maven 将会在项目的 target 目录中生成打包后的文件(例如 JAR 文件、WAR 文件等)。
注意:确保在打包前进行必要的配置,例如指定生成的文件名、指定要打包的类、资源文件等。可以在 pom.xml 文件中的
<build>
标签中进行相关配置。如果有特定的打包需求,可以使用 Maven 插件来进行更详细的定制。以上是使用 IntelliJ IDEA 和 Maven 进行项目打包的一般方法。具体操作可能因项目和环境而有所不同,可以根据具体情况进行调整