springboot之整合jpa

本文介绍了一个使用SpringBoot结合JPA进行数据库操作的具体案例,包括项目搭建步骤、依赖引入、配置文件设置、实体类定义、DAO层实现、Service层接口及实现、Controller层RESTful风格API设计等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文展示一个springboot通过jpa查询数据库的例子, springboot版本 1.5.9

 

首先引入依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

然后在application.properties中添加mysql相关的配置

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

model类

package com.bus365.root.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "user")
public class User {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	private String name;
	private Integer age;
	private Integer addressid;
	public Long getId() {
		return id;
	}
	public void setId(Long 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 Integer getAddressid() {
		return addressid;
	}
	public void setAddressid(Integer addressid) {
		this.addressid = addressid;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + ", addressid=" + addressid + "]";
	}
		
}

controller层,使用restful风格路由

package com.bus365.root.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.bus365.root.model.User;
import com.bus365.root.service.UserService;

@RestController
public class UserController {
	@Autowired
	private UserService userService;

	@RequestMapping(value = "/user", method = { RequestMethod.PUT })
	public String adduser(User user) {
		String result = userService.add(user);
		return result;
	}
	@RequestMapping(value = "/user", method = { RequestMethod.GET })
	public String finduser(Long id) {
		String find = userService.find(id);
		return find;
	}
	@RequestMapping(value = "/user", method = { RequestMethod.POST })
	public String updateuser(User user) {
		String update = userService.update(user);
		return update;
	}
	@RequestMapping(value = "/user", method = { RequestMethod.DELETE })
	public String deleteuser(Long id) {
		String delete = userService.delete(id);
		return delete;
	}
}

持久化dao层的UserDao类

package com.bus365.root.dao;


import java.io.Serializable;
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.bus365.root.model.User;

public interface UserDao extends JpaRepository<User,Long>,JpaSpecificationExecutor<User>,Serializable {
	
	@Query(value = "from User where name = :name")
	List<User> findbyname(@Param("name") String name);
}

Service层

package com.bus365.root.service;

import com.bus365.root.model.User;

public interface UserService {
	public String add(User user);

	public String find(Long id);

	public String delete(Long id);

	public String update(User user); 
	
}
package com.bus365.root.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.bus365.root.Constants;
import com.bus365.root.dao.UserDao;
import com.bus365.root.model.User;
import com.bus365.root.service.UserService;

@Service
public class UserServiceImpl implements UserService {
	@Autowired
	private UserDao userDao;

	public String add(User user) {
		User findOne = null;
		try {
			findOne = userDao.findOne(user.getId());
		} catch (Exception e) {
		}
		if(findOne!=null) {
			return Constants.FAIL;
		}
		try {
			userDao.save(user);
		} catch (Exception e) {
			return Constants.FAIL;
		}
		return Constants.SUCCESS;
	}

	@Override
	public String find(Long id) {
		try {
			userDao.findOne(id);
		} catch (Exception e) {
			return Constants.FAIL;
		}
		return Constants.SUCCESS;
	}

	@Override
	public String delete(Long id) {
		try {
			userDao.delete(id);
		} catch (Exception e) {
			return Constants.FAIL;
		}
		return Constants.SUCCESS;
	}

	@Override
	public String update(User user) {
		try {
			userDao.save(user);
		} catch (Exception e) {
			return Constants.FAIL;
		}
		return Constants.SUCCESS;
	}

}

 

github项目地址   https://github.com/Christain1993/SpringBootIntegration

### Spring Boot 整合 JPA 的简单示例 #### 添加依赖 为了在项目中使用 Spring Boot 和 JPA,需要在 `pom.xml` 文件中添加相应的 Maven 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> ``` 这些依赖项允许应用程序连接到 H2 数据库并使用 Spring Data JPA 进行数据持久化[^1]。 #### 配置 JPA 接下来,在 `application.properties` 或 `application.yml` 中配置数据库连接和其他必要的设置。对于内存中的 H2 数据库,可以这样配置: ```yaml spring: datasource: url: jdbc:h2:mem:testdb driverClassName: org.h2.Driver username: sa password: h2: console: enabled: true jpa: database-platform: org.hibernate.dialect.H2Dialect show-sql: true hibernate: ddl-auto: update ``` 这段配置启用了 H2 控制台,并设置了 Hibernate 自动更新模式以简化开发过程。 #### 创建实体类 定义一个简单的 Java 类作为 ORM 实体。例如,创建一个名为 `User` 的实体类表示用户表的数据模型: ```java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; // Getters and Setters... } ``` 此代码片段展示了如何声明一个基本的 JPA 实体以及其字段映射关系[^2]。 #### 定义 Repository 接口 接着,为上述实体建立对应的仓库接口以便于 CRUD 操作。这里继承自 `JpaRepository<User, Long>` 来获得默认的方法实现: ```java import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { } ``` 这个接口自动获得了许多常用的查询方法而无需额外编码。 #### 编写控制器 最后一步是构建 RESTful Web Service 来暴露 API 终端点给客户端调用。下面是一个简单的例子展示怎样读取所有用户的列表: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserRepository userRepository; @GetMapping("") public List<User> getAllUsers() { return (List<User>) userRepository.findAll(); } } ``` 通过这种方式,能够轻松地利用 Spring MVC 提供的功能快速搭建起基于 HTTP 协议的服务层[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值