当前位置:首页 » 《关注互联网》 » 正文

创建一个Java Web API项目

25 人参与  2024年11月22日 18:00  分类 : 《关注互联网》  评论

点击全文阅读


创建一个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文件

<dependencyManagement>   <dependencies>      <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-dependencies</artifactId>         <version>2.6.4</version>         <type>pom</type>         <scope>import</scope>      </dependency>   </dependencies></dependencyManagement><dependencies>   <!-- Spring Boot Starter Web for building web, including RESTful applications -->   <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>   </dependency>   <!-- MyBatis-Plus for data access layer -->   <dependency>      <groupId>com.baomidou</groupId>      <artifactId>mybatis-plus-boot-starter</artifactId>      <version>3.4.3.4</version>   </dependency>   <!-- MySQL driver -->   <dependency>      <groupId>mysql</groupId>      <artifactId>mysql-connector-java</artifactId>      <scope>runtime</scope>   </dependency>   <!-- Other necessary dependencies -->   ...</dependencies>

二、项目目录结构

在这里插入图片描述

通常的Spring Boot项目目录结构如下:

src└── main    ├── java    │   └── com    │       └── example    │           ├── controller    │           ├── service    │           ├── serviceImpl    │           ├── mapper    │           ├── entity    │           └── dto    └── resources        ├── static        ├── templates        └── application.yml

三、配置文件

在这里插入图片描述

application.yml文件用于配置数据库连接和MyBatis-Plus设置:

spring:  datasource:    url: jdbc:mysql://localhost:3306/yourdb    username: root    password: password    driver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:  mapper-locations: classpath:/mapper/*Mapper.xml  type-aliases-package: com.example.entity

四、实体层

在这里插入图片描述

创建实体类,如User

package com.example.entity;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableName;@TableName("user")public class User {    @TableId    private Long id;    private String name;    private Integer age;    // Getters and Setters}

五、数据访问层

实现数据访问层接口:

package com.example.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.example.entity.User;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface UserMapper extends BaseMapper<User> {}

六、服务层

在这里插入图片描述

编写服务接口和实现类:

package com.example.service;import com.example.entity.User;import java.util.List;public interface UserService {    List<User> getAllUsers();    User getUserById(Long id);    void createUser(User user);    void updateUser(User user);    void deleteUser(Long id);}
package com.example.serviceImpl;import com.example.entity.User;import com.example.mapper.UserMapper;import com.example.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class UserServiceImpl implements UserService {    @Autowired    private UserMapper userMapper;    @Override    public List<User> getAllUsers() {        return userMapper.selectList(null);    }    @Override    public User getUserById(Long id) {        return userMapper.selectById(id);    }    @Override    public void createUser(User user) {        userMapper.insert(user);    }    @Override    public void updateUser(User user) {        userMapper.updateById(user);    }    @Override    public void deleteUser(Long id) {        userMapper.deleteById(id);    }}

七、控制层

创建RESTful接口:

package com.example.controller;import com.example.entity.User;import com.example.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestController@RequestMapping("/api/users")public class UserController {    @Autowired    private UserService userService;    @GetMapping    public List<User> getAllUsers() {        return userService.getAllUsers();    }    @GetMapping("/{id}")    public User getUserById(@PathVariable Long id) {        return userService.getUserById(id);    }    @PostMapping    public void createUser(@RequestBody User user) {        userService.createUser(user);    }    @PutMapping    public void updateUser(@RequestBody User user) {        userService.updateUser(user);    }    @DeleteMapping("/{id}")    public void deleteUser(@PathVariable Long id) {        userService.deleteUser(id);    }}

八、测试和部署

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所有功能。

例如,分页插件的配置使用:

@Configurationpublic class MybatisPlusConfig {    @Bean    public PaginationInterceptor paginationInterceptor() {        return new PaginationInterceptor();    }}

在实现统一的CRUD操作的时候,

Page<User> page = new Page<>(1, 10);IPage<User> userIPage = userMapper.selectPage(page, null);

上述代码可以轻松实现用户数据的分页查询。

未来的改进点可以是结合Spring Cloud进行整个系统微服务化,实现更大的扩展性和灵活性。

总结:Java Web API实现结合Spring Boot和MyBatis-Plus可以大大简化开发中的数据访问复杂性,优化开发流程并增强系统的可维护性。理解并合理运用MyBatis-Plus中的各种特性,更能使开发事半功倍。

//python 因为爱,所以学print("Hello, Python!")

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

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


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/190464.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1