SpringBoot小案例打包执行流程

实现一个下案例的简化部署。

  1. 创建一个maven项目

    1. File -> New -> Project ->Maven,选择SDK版本(通常为1.8版本) -> Next,写项目名称(ArtifactId)和项目坐标(GroupId) -> Next,选择好存储位置后,点击Finish。
    2. 添加目录
    3. 至此,创建好了一个maven项目。
  2. 将maven项目转换成springboot项目

    1. 导入依赖: 打开pom文件,添加父工程和所有项目所需的依赖项(目前只加载web依赖,mysql驱动,mybatis依赖)
      父工程依赖: 管理所有依赖的版本,以后导入的依赖大部分不用写版本,但第三方依赖依然需要写版本号(例如:mybatis依赖属于第三方依赖,没有在starter中进行统一版本管理)。
      starter: 启动器,在大部分依赖都整合在了starter中。

      XML 复制代码
      <!--父工程依赖-->
      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.5.6</version>
          <relativePath/> <!-- lookup parent from repository -->
      </parent>
      
      
      <!--所有项目所需依赖项-->
      <dependencies>
          <!--加载web-->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <!--mysql驱动-->
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
          </dependency>
          <!--mybatis的依赖-->
          <dependency>
              <groupId>org.mybatis.spring.boot</groupId>
              <artifactId>mybatis-spring-boot-starter</artifactId>
              <version>2.1.1</version>
          </dependency>
      </dependencies>
    2. 主程序: 创建启动类(类名一般与项目名一致)

      java 复制代码
      import org.mybatis.spring.annotation.MapperScan;
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      
      /**
       * 启动类
       */
      @SpringBootApplication // 来源于spring-boot-starter,springboot的核心注解
      @MapperScan("com.qcby.springBootDemoMybatis.mapper")
      public class SpringBootDemoMybatis {
          public static void main(String[] args) {
              SpringApplication.run(SpringBootDemoMybatis.class, args);
          }
      }
    3. 配置类: 文件名为application.yml或application.properties都可以,配置端口号、数据库、mybatis

      XML 复制代码
      server:
        port: 8085
      spring:
        datasource:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/mybatis_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
          username: root
          password: root
      mybatis:
        mapper-locations: classpath:mapper/*.xml
        type-aliases-package: com.qcby.springBootDemoMybatis.model
        configuration:
          log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  3. 写一个小案例:查询所有用户信息

    1. 创建表及添加数据

      sql 复制代码
      create database mybatis_db;
      use mybatis_db;
      ​
      CREATE TABLE `user` (
        `id` int(11) NOT NULL auto_increment,
        `username` varchar(32) NOT NULL COMMENT '用户名称',
        `birthday` datetime default NULL COMMENT '生日',
        `sex` char(1) default NULL COMMENT '性别',
        `address` varchar(256) default NULL COMMENT '地址',
        PRIMARY KEY  (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      ​
      insert  into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (1,'老王','2018-02-27 17:47:08','男','北京'),(2,'熊大','2018-03-02 15:09:37','女','上海'),(3,'熊二','2018-03-04 11:34:34','女','深圳'),(4,'光头强','2018-03-04 12:04:06','男','广州');
    2. 创建实体类:User

      java 复制代码
      public class User {
          private Integer id;
          private String username;
          private Date birthday;
          private String sex;
          private String address;
      
          public User() {
          }
      
          public User(Integer id, String username, Date birthday, String sex, String address) {
              this.id = id;
              this.username = username;
              this.birthday = birthday;
              this.sex = sex;
              this.address = address;
          }
      
          public Integer getId() {
              return id;
          }
      
          public void setId(Integer id) {
              this.id = id;
          }
      
          public String getUsername() {
              return username;
          }
      
          public void setUsername(String username) {
              this.username = username;
          }
      
          public Date getBirthday() {
              return birthday;
          }
      
          public void setBirthday(Date birthday) {
              this.birthday = birthday;
          }
      
          public String getSex() {
              return sex;
          }
      
          public void setSex(String sex) {
              this.sex = sex;
          }
      
          public String getAddress() {
              return address;
          }
      
          public void setAddress(String address) {
              this.address = address;
          }
      
          @Override
          public String toString() {
              return "User{" +
                      "id=" + id +
                      ", username='" + username + '\'' +
                      ", birthday=" + birthday +
                      ", sex='" + sex + '\'' +
                      ", address='" + address + '\'' +
                      '}';
          }
      }
    3. 创建mapper:UserMapper.java和UserMapper.xml

      java 复制代码
      @Mapper
      public interface UserMapper {
          /**
           * 查询所有用户
           * @return
           */
          public List<User> findAll();
      }
      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.qcby.springBootDemoMybatis.mapper.UserMapper">
          <select id="findAll" resultType="com.qcby.springBootDemoMybatis.model.User">
              select * from user
          </select>
      </mapper>
    4. 创建service层:UserService.java和UserServiceImpl.java

      java 复制代码
      public interface UserService {
          List<User> findAll();
      }
      java 复制代码
      @Service
      public class UserServiceImpl implements UserService {
          @Autowired
          private UserMapper userMapper;
      
          @Override
          public List<User> findAll() {
              return userMapper.findAll();
          }
      }
    5. 创建controller层:UserController.java

      java 复制代码
      @RestController
      @RequestMapping("/api/users")
      public class UserController {
          @Autowired
          private UserService userService;
      
          /**
           * 获取所有用户
           */
          @GetMapping
          public List<User> findAllUsers() {
              return userService.findAll();
          }
      }
    6. 运行主程序测试
      访问接口:http://localhost:8085/api/users

  4. 简化部署

    1. 在pom文件中加入插件,加入插件后,刷新。

      XML 复制代码
      <!-- Spring Boot Maven插件,这是生成可执行jar的关键 -->
      <build>
          <plugins>
              <plugin>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-maven-plugin</artifactId>
              </plugin>
          </plugins>
      </build>
    2. 点击右侧Maven -> 点击项目下的Lifecycle -> package,打包成功,项目目录的target下会生成两个文件

    3. 打开cmd,进入该文件的target目录下,执行java -jar springBootDemoMybatis-1.0-SNAPSHOT.jar命令,就可以正常访问链接,输出内容。

相关推荐
豆角焖肉8 分钟前
Maven进阶与搭建私服
java·maven
大不点wow18 分钟前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
止语Lab22 分钟前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活22 分钟前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
噢,我明白了23 分钟前
Java中日期和字符串的处理
java·开发语言·日期
程序员天天困27 分钟前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn28 分钟前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
dkbnull30 分钟前
Spring Boot请求处理组件对比详解
java·spring boot
jun_bai32 分钟前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器
顺风尿一寸33 分钟前
记一次 Spring AOP 与定时任务引发的死锁排查
java