创建一个Java Web API项目

打印 上一主题 下一主题

主题 791|帖子 791|积分 2373

创建一个Java Web API涉及多个步骤和技能栈,包括项目设置、依赖管理、数据访问层实现、业务逻辑实现、控制层开辟以及测试和部署。在这篇详解中,我将领导你通过一个完整的Java Web API实现流程,采用Spring Boot和MyBatis-Plus作为主要技能工具。

一、项目初始化



  • 选择技能栈:起首,需要确定使用Spring Boot作为框架,MyBatis-Plus作为ORM框架,Spring Web作为Rest接口的实现工具。
  • 创建Maven项目:采用Maven举行依赖管理,Spring Initializr是一个很好的工具,可以快速生成基本的Spring Boot项目布局。
  • 设置pom.xml文件
    1. <dependencyManagement>
    2.    <dependencies>
    3.       <dependency>
    4.          <groupId>org.springframework.boot</groupId>
    5.          <artifactId>spring-boot-dependencies</artifactId>
    6.          <version>2.6.4</version>
    7.          <type>pom</type>
    8.          <scope>import</scope>
    9.       </dependency>
    10.    </dependencies>
    11. </dependencyManagement>
    12. <dependencies>
    13.    <!-- Spring Boot Starter Web for building web, including RESTful applications -->
    14.    <dependency>
    15.       <groupId>org.springframework.boot</groupId>
    16.       <artifactId>spring-boot-starter-web</artifactId>
    17.    </dependency>
    18.    <!-- MyBatis-Plus for data access layer -->
    19.    <dependency>
    20.       <groupId>com.baomidou</groupId>
    21.       <artifactId>mybatis-plus-boot-starter</artifactId>
    22.       <version>3.4.3.4</version>
    23.    </dependency>
    24.    <!-- MySQL driver -->
    25.    <dependency>
    26.       <groupId>mysql</groupId>
    27.       <artifactId>mysql-connector-java</artifactId>
    28.       <scope>runtime</scope>
    29.    </dependency>
    30.    <!-- Other necessary dependencies -->
    31.    ...
    32. </dependencies>
    复制代码
二、项目目录布局


通常的Spring Boot项目目录布局如下:
  1. src
  2. └── main
  3.     ├── java
  4.     │   └── com
  5.     │       └── example
  6.     │           ├── controller
  7.     │           ├── service
  8.     │           ├── serviceImpl
  9.     │           ├── mapper
  10.     │           ├── entity
  11.     │           └── dto
  12.     └── resources
  13.         ├── static
  14.         ├── templates
  15.         └── application.yml
复制代码
三、设置文件


application.yml文件用于设置数据库连接和MyBatis-Plus设置:
  1. spring:
  2.   datasource:
  3.     url: jdbc:mysql://localhost:3306/yourdb
  4.     username: root
  5.     password: password
  6.     driver-class-name: com.mysql.cj.jdbc.Driver
  7. mybatis-plus:
  8.   mapper-locations: classpath:/mapper/*Mapper.xml
  9.   type-aliases-package: com.example.entity
复制代码
四、实体层


创建实体类,如User:
  1. package com.example.entity;
  2. import com.baomidou.mybatisplus.annotation.TableId;
  3. import com.baomidou.mybatisplus.annotation.TableName;
  4. @TableName("user")
  5. public class User {
  6.     @TableId
  7.     private Long id;
  8.     private String name;
  9.     private Integer age;
  10.     // Getters and Setters
  11. }
复制代码
五、数据访问层

实现数据访问层接口:
  1. package com.example.mapper;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import com.example.entity.User;
  4. import org.apache.ibatis.annotations.Mapper;
  5. @Mapper
  6. public interface UserMapper extends BaseMapper<User> {
  7. }
复制代码
六、服务层


编写服务接口和实现类:
  1. package com.example.service;
  2. import com.example.entity.User;
  3. import java.util.List;
  4. public interface UserService {
  5.     List<User> getAllUsers();
  6.     User getUserById(Long id);
  7.     void createUser(User user);
  8.     void updateUser(User user);
  9.     void deleteUser(Long id);
  10. }
复制代码
  1. package com.example.serviceImpl;
  2. import com.example.entity.User;
  3. import com.example.mapper.UserMapper;
  4. import com.example.service.UserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. @Service
  9. public class UserServiceImpl implements UserService {
  10.     @Autowired
  11.     private UserMapper userMapper;
  12.     @Override
  13.     public List<User> getAllUsers() {
  14.         return userMapper.selectList(null);
  15.     }
  16.     @Override
  17.     public User getUserById(Long id) {
  18.         return userMapper.selectById(id);
  19.     }
  20.     @Override
  21.     public void createUser(User user) {
  22.         userMapper.insert(user);
  23.     }
  24.     @Override
  25.     public void updateUser(User user) {
  26.         userMapper.updateById(user);
  27.     }
  28.     @Override
  29.     public void deleteUser(Long id) {
  30.         userMapper.deleteById(id);
  31.     }
  32. }
复制代码
七、控制层

创建RESTful接口:
  1. package com.example.controller;
  2. import com.example.entity.User;
  3. import com.example.service.UserService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. import java.util.List;
  7. @RestController
  8. @RequestMapping("/api/users")
  9. public class UserController {
  10.     @Autowired
  11.     private UserService userService;
  12.     @GetMapping
  13.     public List<User> getAllUsers() {
  14.         return userService.getAllUsers();
  15.     }
  16.     @GetMapping("/{id}")
  17.     public User getUserById(@PathVariable Long id) {
  18.         return userService.getUserById(id);
  19.     }
  20.     @PostMapping
  21.     public void createUser(@RequestBody User user) {
  22.         userService.createUser(user);
  23.     }
  24.     @PutMapping
  25.     public void updateUser(@RequestBody User user) {
  26.         userService.updateUser(user);
  27.     }
  28.     @DeleteMapping("/{id}")
  29.     public void deleteUser(@PathVariable Long id) {
  30.         userService.deleteUser(id);
  31.     }
  32. }
复制代码
八、测试和部署

1. 测试



  • 使用JUnit举行单位测试。
  • 使用Postman等工具举行API测试。
2. 部署



  • 生成.jar文件,通过下令java -jar <jar-file>.jar运行应用。
  • 也可以在云服务平台如AWS, Azure, 大概阿里云上举行部署。
九、MyBatis-Plus特性分析


MyBatis-Plus是MyBatis的一个增强工具,设计为简化开辟、提高服从。以下是MyBatis-Plus的一些关键特性和设置:

  • CRUD操纵:MyBatis-Plus扩展了MyBatis的基本功能,提供主动生成的CRUD接口,开辟者无需编写XML文件来实现基本的增编削查功能。
  • 分页插件:内置分页插件,轻松实现物理分页和信息统计,淘汰了开辟分页逻辑的复杂性。
  • 主动填充:支持主动填充计谋,帮助企业主动维护创建时间、更新时间等字段。
  • 代码生成器:提供代码生成器,可以通过简朴的设置主动生成符合业务需求的代码,快速搭建基础业务。
  • 多种插件支持:插件机制非常机动,如乐观锁插件、防止全表更新操纵插件,满足各种复杂的业务场景。
  • 高性能:基于MyBatis,深度优化了单表操纵,兼容MyBatis所有功能。
例如,分页插件的设置使用:
  1. @Configuration
  2. public class MybatisPlusConfig {
  3.     @Bean
  4.     public PaginationInterceptor paginationInterceptor() {
  5.         return new PaginationInterceptor();
  6.     }
  7. }
复制代码
在实现同一的CRUD操纵的时候,
  1. Page<User> page = new Page<>(1, 10);
  2. IPage<User> userIPage = userMapper.selectPage(page, null);
复制代码
上述代码可以轻松实现用户数据的分页查询。
将来的改进点可以是结合Spring Cloud举行整个体系微服务化,实现更大的扩展性和机动性。
总结:Java Web API实现结合Spring Boot和MyBatis-Plus可以大大简化开辟中的数据访问复杂性,优化开辟流程并增强体系的可维护性。理解并合理运用MyBatis-Plus中的各种特性,更能使开辟事半功倍。
  1. //python 因为爱,所以学
  2. print("Hello, Python!")
复制代码
关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表