Spring Boot使用Spring JPA操作

概念

什么是JAP

  • JAP(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。
  • JPA通过JDK5.0注解或者XML描述对象 - 关系表的映射关系,并将运行期的实体对象持久化到数据库中。
  • 持久化(Persistence),即把数据保存到可永久保存的存储设备中,如磁盘。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等...

什么是Spring Data

  • Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目的是使用数据库访问变得方便快捷,并支持MapReduce框架和云计算数据服务。它还支持基于关系型数据库的数据服务,如Oracle RAC等。对于拥有海量数据的项目,可以使用Spring Data来简化项目的开发,就如Spring Framework对JDBC、ORM的支持一样,Spring Data会让数据的访问变得更加方便。

什么是Spring Data JPA

  • Spring Data JPA:可以简化JAP的写法,可以在不用写实现的情况下,实现对数据的访问和操作。除了CRUD(Create、Retrieve、Update、Delete)外,还包括分页、排序等一些常用的功能。
  • 我们清楚的是Spring Data是一个开源框架,在这个框架中Spring Data JAP只是这个框架中的一个模块,所以名称才叫Spring Data JPA。如果单独使用JPA开发,会发现这个代码量和使用JDBC开发一样有点烦人,所以Spring Data JPA的出现就为了简化JPA的写法,让你只需要编写一个借口继承一个类就能实现CRUD操作了。

配置Spring JPA

修改pom.xml配置文件

<!-- 添加MySQL数据库驱动依赖包 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 添加spring-data-jpa依赖包 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

application.properties文件加入配置

#指定MySql数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.diverClassName=com.mysql.jdbc.Driver
spring.datasource.max-active==20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

#配置spring JPA信息
spring.jpa.database=MYSQL
#控制台是否打印SQL信息
spring.jpa.show-sql=true
#当执行DDL语句时,是创建还是更新还是删除等...create、update、drop-create
spring.jpa.hibernate.ddl-auto=update
#持久化命名策略,当创建一个实体类,会在相应的数据库中新增一张该实体类对应的数据库表结构
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

创建实体类

package com.cori.demo.bean;

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

/**
 * 创建一个用户实体类
 * 
 * 使用@Entity进行实体类持久化操作,当JPA检测到实体类当中有@Entity注解时,则会在数据库中生成该类对应的表结构性信息,
 * 如属性为驼峰命名法,则对应生成的表字段为,如:userId -> user_id(可自己定义); 
 * 使用@Id指定主键
 * 
 * @author Administrator
 *
 */
@Entity
public class UserBean {
	/**
	 * @Id指定主键
	 * @GeneratedValue(strategy=GenerationType.AUTO) 指定主键的生成策略,MySQL为自动增长
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer userId;

	private String userName;

	private Integer userAge;

	private Integer userSex;

	private String idCard;

	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public Integer getUserAge() {
		return userAge;
	}

	public void setUserAge(Integer userAge) {
		this.userAge = userAge;
	}

	public Integer getUserSex() {
		return userSex;
	}

	public void setUserSex(Integer userSex) {
		this.userSex = userSex;
	}

	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}
}

创建实体类之后,这一步启动服务,然后进入MySQL数据库中查看,可以看到对应的user_bean表结构已经创建好了。

创建接口

  • 创建接口继承CrudRepository
package com.cori.demo.Repository;

import org.springframework.data.repository.CrudRepository;

import com.cori.demo.bean.UserBean;

public interface UserRepository extends CrudRepository<UserBean, Integer>{
	
	
}

创建Service

package com.cori.demo.service;

import javax.annotation.Resource;
import javax.transaction.Transactional;
import org.springframework.stereotype.Service;
import com.cori.demo.Repository.UserRepository;
import com.cori.demo.bean.UserBean;

@Service
public class UserService {

	@Resource
	private UserRepository userRepository;

	//新增记录
	@Transactional
	public void save(UserBean bean) {
		userRepository.save(bean);
	}

	//删除记录
	@Transactional
	public void delete(int id) {
		userRepository.delete(id);
	}
	
	//查询记录
	public Iterable<UserBean> findAll() {
		return userRepository.findAll();
	}
}

创建Controller

package com.cori.demo.controller;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.cori.demo.bean.UserBean;
import com.cori.demo.service.UserService;

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

	@Resource
	private UserService userService;

	@RequestMapping("/save")
	public String save() {
		UserBean bean = new UserBean();
		bean.setUserName("张三");
		bean.setUserAge(28);
		bean.setUserSex(0);
		bean.setIdCard("123456789123456789");
		userService.save(bean);
		return "ok";
	}

	@RequestMapping("/delete")
	public String delete() {
		userService.delete(1);
		return "ok";
	}
	
	@RequestMapping("/getAll")
	public Iterable<UserBean> findAll(){
		return userService.findAll();
	}
}

到这里已经实现了简单的增删查功能了,可以启动服务进行测试了。

总结

  1. 需要在POM.xml文件中添加相应的依赖包;
  2. 需要在application.properties配置文件中添加配置信息;
  3. 需要创建实体类,比如:User;
  4. 需要创建接口类并继承CrudRepository;
  5. 需要创建Service类;
  6. 需要创建Controller类;
  7. 测试;

猜你喜欢

转载自my.oschina.net/u/3826645/blog/1823279