下面就详细讲解一下 “基于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操作数据库
- 接口 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);
}
}
-
使用Postman或Curl等工具测试访问API:
-
GET请求:http://localhost:8080/users ,将返回所有用户信息的 JSON 字符串。
- GET请求:http://localhost:8080/users/1 ,将返回id为1的用户信息。
- POST请求:http://localhost:8080/users ,并带上JSON数据如下,将创建一个新的用户,并返回创建的用户信息。
{"username": "test", "password": "test"}
。 - PUT请求:http://localhost:8080/users/1 ,并带上JSON数据如下,将更新id为1的用户信息,并返回更新后的用户信息。
{"username": "test1", "password": "test1"}
。 - DELETE请求:http://localhost:8080/users/1 ,将删除id为1的用户信息。
示例二:使用JdbcTemplate操作数据库
- 在控制器中注入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 操作定义
}
-
使用Postman或Curl测试访问API:
-
GET请求:http://localhost:8080/sql/users ,将查询所有用户信息并返回JSON字符串。
总结
通过本文的介绍,我们可以发现 Spring Boot 集成JPA+Hibernate+JdbcTemplate变得异常简单。我们可以很容易地使用 Spring Boot 实现增删改查和自定义SQL操作,大大提高了我们的开发效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(详解) - Python技术站