基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(详解)

下面就详细讲解一下 “基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(详解)” 的攻略。

概述

本攻略介绍如何使用 Spring Boot 1.5.4 集成 jpa+hibernate+jdbcTemplate。JPA是Java Persistence API的简称,是Java EE 5.0规范中一部分,是一个ORM框架。Hibernate是最早出现的ORM框架之一,可以将 Java 对象映射到数据库中的表。jdbcTemplate是Spring框架中的一个JDBC抽象层,可以使用自定义的SQL语句操作数据库。

步骤

下面将分步骤介绍如何集成 jpa+hibernate+jdbcTemplate。

步骤一:创建项目

首先,我们需要创建一个 Spring Boot 应用程序。可以使用 Spring 官方的 Spring Initializr 创建项目。也可以使用基于命令行的方式创建项目:

$ mkdir spring-boot-jpa-hibernate-jdbctemplate
$ cd spring-boot-jpa-hibernate-jdbctemplate
$ gradle init --type java-application

步骤二:添加依赖

在创建好的Spring Boot项目中,我们需要在pom.xml文件中添加如下依赖:

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

    <!-- Spring Boot Data JPA Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- Hibernate Entity Manager -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.2.5.Final</version>
    </dependency>

    <!-- Spring Boot JDBC Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <!-- H2 Database -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- MySQL Database -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

步骤三:配置文件

在项目的 /src/main/resources 目录下,需要创建一个 application.yml 或 application.properties 的文件,这个文件主要用来存储应用程序的配置信息。其中,我们需要配置数据源和JPA:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/database_name
    username: db_user_name
    password: db_password
    driver-class-name: com.mysql.jdbc.Driver
    #以下配置可选
    #maximum-pool-size: 10
    #minimum-idle: 5
    #initial-size: 5

  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: update # 如需改变数据库结构选择对应的更新方式,不要使用 create-drop
    show-sql: true # 打印 SQL 语句

步骤四:创建实体类

需要创建一个实体类,表示在数据库中的一张表。该实体类需要标记 @Entity 注解,并且需要指定该实体类和表中的每个字段的映射关系:

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

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

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    // 构造函数、getter、setter等方法省略
}

步骤五:创建Repository

需要创建 User 对象所对应的 UserRepository 接口,并继承 JpaRepository,这里我们使用默认的CRUD操作,并添加一些自定义方法:

public interface UserRepository extends JpaRepository<User, Long> {

    User findByUsername(String username);

    List<User> findAllByUsernameStartsWith(String prefix);

    @Query("SELECT u FROM User u WHERE u.username LIKE %?1%")
    List<User> findByKeyword(String keyword);

    // 更多自定义方法定义
}

步骤六:创建Controller

创建一个 UserController 类,使用@RestController 注解标记,加载所有用户:

@RestController
public class UserController {

    @Autowired
    private UserRepository userRepository;

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

    // 更多 API 定义
}

步骤七:使用JdbcTemplate

在代码中,使用 JdbcTemplate 执行自定义SQL语句:

@Autowired
private JdbcTemplate jdbcTemplate;

public void testQuery() {
    jdbcTemplate.queryForObject("SELECT COUNT(*) FROM users", Integer.class);
}

步骤八:运行程序

我们使用Spring Boot内置的Tomcat运行测试应用程序:

$ ./gradlew bootRun

程序运行后,在浏览器输入 http://localhost:8080/users ,将返回所有用户信息的JSON字符串。

示例

下面提供两个示例,展示如何使用JPA和JdbcTemplate分别操作数据库。

示例一:使用JPA操作数据库

  1. 接口 UserRepository 已经定义了一些常见的 CRUD 操作,我们只需在 UserController 中注入 UserRepository 对象,并进行调用即可:
@RestController
public class UserController {

    @Autowired
    private UserRepository userRepository;

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

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        return userRepository.findOne(id);
    }

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    @PutMapping("/users/{id}")
    public User updateUser(@RequestBody User user, @PathVariable Long id) {
        user.setId(id);
        return userRepository.save(user);
    }

    @DeleteMapping("/users/{id}")
    public void deleteUser(@PathVariable Long id) {
        userRepository.delete(id);
    }
}
  1. 使用Postman或Curl等工具测试访问API:

  2. GET请求:http://localhost:8080/users ,将返回所有用户信息的 JSON 字符串。

  3. GET请求:http://localhost:8080/users/1 ,将返回id为1的用户信息。
  4. POST请求:http://localhost:8080/users ,并带上JSON数据如下,将创建一个新的用户,并返回创建的用户信息。{"username": "test", "password": "test"}
  5. PUT请求:http://localhost:8080/users/1 ,并带上JSON数据如下,将更新id为1的用户信息,并返回更新后的用户信息。{"username": "test1", "password": "test1"}
  6. DELETE请求:http://localhost:8080/users/1 ,将删除id为1的用户信息。

示例二:使用JdbcTemplate操作数据库

  1. 在控制器中注入JdbcTemplate,使用该类对象执行自定义SQL语句。例如,使用 JdbcTemplate 查询所有的用户信息:
@Controller
public class SqlController {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/sql/users")
    public List<Map<String, Object>> selectUsers() {
        return jdbcTemplate.queryForList("SELECT * FROM users");
    }

    // 更多 SQL 操作定义
}
  1. 使用Postman或Curl测试访问API:

  2. GET请求:http://localhost:8080/sql/users ,将查询所有用户信息并返回JSON字符串。

总结

通过本文的介绍,我们可以发现 Spring Boot 集成JPA+Hibernate+JdbcTemplate变得异常简单。我们可以很容易地使用 Spring Boot 实现增删改查和自定义SQL操作,大大提高了我们的开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(详解) - Python技术站

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

相关文章

  • JavaSpringBoot报错“HttpMediaTypeNotAcceptableException”的原因和处理方法

    原因 “HttpMediaTypeNotAcceptableException” 错误通常是以下原因引起的: 媒体类型不可接受:如果您的媒体类型不可接受,则可能会出现此错误。在这种情况下,您需要检查您的媒体类型并确保它们可接受。 媒体类型不正确:如果您的媒体类型不正确,则可能会出现此错误。在这种情况下,您需要检查您的媒体类型并确保它们正确。 解决办法 以下是…

    Java 2023年5月4日
    00
  • SpringBoot validator参数验证restful自定义错误码响应方式

    下面我将详细讲解“SpringBoot validator参数验证restful自定义错误码响应方式”的完整攻略。 一、背景介绍 在SpringBoot应用中经常需要对API的请求参数进行验证,如果请求参数不符合要求,需及时响应错误信息告知请求方。SpringBoot提供了Validator机制来方便地进行参数验证,在参数验证不通过时会抛出BindingRe…

    Java 2023年6月1日
    00
  • java 实现当前时间加减30分钟的时间代码

    以下是 Java 实现当前时间加减 30 分钟的时间代码的完整攻略: 1. 获取当前时间 在 Java 中,我们可以通过 java.util.Date 类来获取当前时间。该类的 getTime() 方法可以返回自标准基准时间(1970 年 1 月 1 日 00:00:00 UTC)以来的毫秒数。我们可以用 new Date() 来获取当前时间的 Date 对…

    Java 2023年5月20日
    00
  • javaweb图书商城设计之用户模块(1)

    “javaweb图书商城设计之用户模块(1)”是一篇教程,旨在帮助Java Web开发初学者了解用户模块的设计和实现。在此攻略中,作者分享了自己的设计思路、代码示例和实现方法,让读者能够更好地理解Java Web开发中的用户模块。 本教程分为以下几部分: 用户模块设计思路和需求分析 数据库设计和表结构定义 JavaBean类设计和编码实现 JSP页面设计和编…

    Java 2023年6月15日
    00
  • SpringBoot是如何使用SQL数据库的?

    Spring Boot是一个基于Spring框架的快速开发框架,它可以帮助我们快速构建Web应用程序。在Spring Boot中,我们可以使用多种方式来使用SQL数据库。以下是两种常见的方式: 1. 使用Spring Data JPA Spring Data JPA是一种基于JPA的数据访问框架,它可以帮助我们快速构建数据访问层。以下是一个示例: 添加依赖 …

    Java 2023年5月14日
    00
  • java检查数组是否有重复元素的方法

    当我们需要在 Java 中检测一个数组是否包含重复的元素时,有多种方法可以实现。本文将介绍一些常用的方法,包括暴力破解、利用 Set 和利用 Arrays 类的 sort() 方法等。下面将一一讲解这些方法的步骤。 1、暴力破解 暴力破解的思路非常简单:遍历整个数组,检查每一个元素是否和后面的元素重复。如果发现重复的元素,则返回 true。否则,该数组中就不…

    Java 2023年5月26日
    00
  • 使用Spring处理x-www-form-urlencoded方式

    要使用Spring处理x-www-form-urlencoded方式,需要进行以下步骤: 配置Spring MVC 在web.xml中配置DispatcherServlet。在DispatcherServlet的xml配置文件中,添加,启用Spring MVC注解驱动。这样Spring MVC就可以自动处理表单提交请求。 编写Controller Sprin…

    Java 2023年5月20日
    00
  • Java实战之医院管理系统的实现

    Java实战之医院管理系统的实现 系统介绍 医院管理系统是一个综合性管理平台,它能够帮助医院管理各个方面的业务。该系统主要包含以下几个模块: 患者管理模块 患者管理模块用于管理患者的档案信息、病历信息以及病历预约信息等。 医生管理模块 医生管理模块用于管理医生的信息、排班信息以及医生的病历信息等。 药品管理模块 药品管理模块用于管理医院的药品信息、出库信息以…

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