Springboot+hibernate实现简单的增删改查示例

yizhihongxing

现在我将详细讲解如何用Springboot和Hibernate实现一个简单的增删改查示例,示例将包括两个部分。

简介

Springboot是一个开源的Java开发框架,可以帮助开发者快速构建高效、可扩展的web应用程序。而Hibernate则是一个Java持久化框架,通过ORM(对象关系映射)的方式来实现对象和关系数据之间的映射。通过结合使用Springboot和Hibernate,可以让我们快速地构建出高效、优秀的web应用程序。

环境准备

在开始学习之前,请确保您的电脑已经安装好以下工具:

  1. JDK
  2. Maven
  3. IDEA开发工具

创建一个新的Springboot项目

首先,我们需要创建一个新的Springboot项目。按照以下步骤操作:

  1. 打开IDEA,点击“File” -> “New” -> “Project”。
  2. 在弹出的窗口中,选择“Spring Initializr”,并点击“Next”。
  3. 在“Project SDK”中选择你的JDK版本,然后在“Spring Initializr”页面中,选择“Web”和“Hibernate”选项。
  4. 在该页面中,我们还可以指定以下内容:

  5. 项目名字

  6. GroupID和ArtifactID
  7. 包名
  8. 项目版本号

  9. 在选择完以上内容后点击“Finish”按钮,等待IDEA自动构建项目。

添加依赖包

接下来,我们需要添加一些依赖包来帮助我们实现数据存储的功能。在我们的项目中,我们选择使用MySQL作为我们的数据库。

打开项目的pom.xml文件,添加以下依赖包:

<dependencies>
  <!--SpringBoot Web-->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <!--SpringBoot JPA-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>

  <!-- MySQL Connector -->
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
  </dependency>

</dependencies>

需要注意的是,当您添加完以上依赖包后,您需要配置一下您的MySQL数据库,让它能够连接到您的项目中。请在application.properties或者application.yml文件中添加以下代码:

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_hibernate_demo?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=

请根据实际情况,更改数据库的连接信息。

编写代码

  1. 编写实体类

首先,我们需要定义我们的实体类。在这个例子中,我们定义一个User类来存储用户信息。代码如下:

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column
    private String name;

    @Column
    private Integer age;

    @Column
    private String address;

    public User() {
    }

    public User(String name, Integer age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}
  1. 编写Repository

接下来,我们需要定义一个Repository接口,来实现对User表的增删改查操作。在这个例子中,我们定义一个UserRepository接口。以下是我们需要编写的代码:

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {

}
  1. 编写Service

在上一步中,我们完成了对于User表的Repository层的定义。接下来,我们还需要实现Service层的定义。在本例中,我们定义一个UserService接口来处理与User实体相关的业务逻辑。以下是我们需要编写的代码:

@Service
public interface UserService {

    List<User> findAll();

    User save(User user);

    User findById(Integer id);

    void deleteById(Integer id);
}

对于UserService的实现,我们创建一个叫做UserServiceImpl的类。以下是我们需要编写的代码:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public List<User> findAll() {
        return userRepository.findAll();
    }

    @Override
    public User save(User user) {
        return userRepository.save(user);
    }

    @Override
    public User findById(Integer id) {
        return userRepository.findById(id).orElse(null);
    }

    @Override
    public void deleteById(Integer id) {
        userRepository.deleteById(id);
    }
}
  1. 编写Controller

在上一步中,我们完成了对于User实体的Service层定义。接下来,我们还需要定义一个Controller层。在这个例子中,我们定义一个叫做UserController的类。以下是我们需要编写的代码:

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/findAll")
    public List<User> findAll() {
        return userService.findAll();
    }

    @PostMapping("/save")
    public User save(@RequestParam("name") String name,
                     @RequestParam("age") int age,
                     @RequestParam("address") String address) {
        User user = new User(name, age, address);
        return userService.save(user);
    }

    @GetMapping("/findById")
    public User findById(@RequestParam("id") Integer id) {
        return userService.findById(id);
    }

    @DeleteMapping("/deleteById")
    public void deleteById(@RequestParam("id") Integer id) {
        userService.deleteById(id);
    }
}

示例

  1. 查询

在浏览器中访问http://localhost:8080/user/findAll,该URL将会返回数据库中所有的User信息。

  1. 新增

在浏览器中访问http://localhost:8080/user/save?name=John&age=20&address=USA,该URL将会新增一个用户名为John、年龄为20、地址为USA的User信息。

  1. 删除

在浏览器中访问http://localhost:8080/user/deleteById?id=1,该URL将会删除数据库中ID为1的User信息。

以上就是通过Springboot和Hibernate实现的一个简单的增删改查示例。希望这个例子可以帮助您更好的理解,如何使用Springboot和Hibernate构建一个高效、优秀的web应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot+hibernate实现简单的增删改查示例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • dubbo自定义异常的完整步骤与测试

    下面我会详细讲解“dubbo自定义异常的完整步骤与测试”的完整攻略: 规划异常类包结构 首先应该规划好异常类的包结构。通常情况下,我们会把异常类放在com.xxx.exception包中,这个包可以在provider、consumer、api中共用。在com.xxx.exception包中,我们可以建立一些子包,如com.xxx.exception.comm…

    Java 2023年5月27日
    00
  • 同步代码块的作用是什么?

    以下是关于同步代码块的作用以及使用攻略的详细讲解: 同步代码块的作用 同步代码块是指在多线程编程中,使用 synchronized 关键字来保证多个线程对共享资源的访问的互斥性的一种代码块。同步代码块可以保证在同一时刻只有一个线程可以访问共享资源,从而避免了多个线程同时访问共享资源导致的数据不一致的问题。 同步代码块的使用 同步代码块的使用需要考虑以下几个方…

    Java 2023年5月12日
    00
  • Android自定义抛出异常的方法详解

    Android自定义抛出异常的方法详解 在Android开发中,我们经常会需要使用异常来处理一些错误情况,但是Java提供的异常类已经无法满足我们的需求,这时候我们就需要自定义异常来处理异常情况。本文介绍了如何定义自己的异常类以及如何使用它。 自定义异常类 自定义异常类通常需要继承Exception或RuntimeException类。如果你的异常会使程序无…

    Java 2023年5月27日
    00
  • 一个处理用户登陆的servlet简单实例

    下面我来详细讲解如何实现一个处理用户登录的servlet的完整攻略,包括在Eclipse中的创建项目、编写代码和运行测试等过程。 创建项目和包 首先,我们需要在Eclipse中创建一个Java Web项目,具体步骤如下: 在Eclipse中点击 File > New > Project; 选择“Java Web”项目类型,点击“Next”按钮; …

    Java 2023年6月16日
    00
  • JAVA代码书写规范汇总详解

    JAVA代码书写规范汇总详解 在 JAVA 开发中,书写规范的重要性不言而喻。规范的代码具有更好的可读性,易于维护和扩展,同时也有助于代码的重构和优化。本文将详细讲解 JAVA 代码书写规范汇总,希望能够帮助开发人员写出更好的代码。 命名规范 在 JAVA 中,命名规范是非常重要的。命名规范不仅决定了代码的可读性,也影响着代码的使用和维护。以下是一些常见的 …

    Java 2023年5月23日
    00
  • java分布式面试系统限流最佳实践

    针对Java分布式面试系统的限流最佳实践,我将分享以下攻略: 1. 需求调研与场景分析 首先,你需要了解你的系统在什么场景下存在限流的需求,例如有哪些接口需要限流、在什么情况下需要限流等等。在这个阶段中,你需要和业务对接人员进行沟通,了解产品的最大承载量、是否需要分区以及不同区之间的流量比例等。 2. 选择限流算法 常见的限流算法有令牌桶算法、漏桶算法以及计…

    Java 2023年5月24日
    00
  • springmvc中下载中文文件名称为下划线的解决方案

    下面是springmvc中下载中文文件名称为下划线的解决方案的基本步骤: 在Controller中获取文件 @GetMapping(“/download”) public ResponseEntity<ByteArrayResource> downloadFile(HttpServletRequest request) throws IOExce…

    Java 2023年5月20日
    00
  • Stream流排序数组和List 详解

    Stream流排序数组和List 详解 在 Java 8 中新增了 Stream 流,可以使用 Stream 流对数组和 List 进行排序。本文将详细介绍 Stream 流排序数组和 List 的方法以及示例。 Stream 流排序数组 对于数组排序,我们可以使用 Arrays 类中的 sort 方法,该方法可以对基本类型和实现 Comparable 接口…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部