【JPA】spring boot下 spring Data JPA的使用

spring boot下 spring Data JPA的使用步骤:

spring boot中的spring Data JPA步骤:

1) pom.xml文件中引入mysql-connector-java,spring-boot-starter-data-jpa依赖

2) 在application.properties文件中配置数据库和jpa配置

3) 创建一个实体类,比如Cat

4) 创建一个接口继承于CrudRepository,这个地方于集成于Hibernate与数据库进行交互

5) 创建一个service

6) 创建一个controller

7) 启动服务,进行测试(运行启动类)

******eg******:

项目实例结构:


1). 在pom.xml文件中添加mysql-connector-java,spring-boot-starter-data-jpa依赖

<!-- 添加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>
2) 在application.properties文件中配置数据库和jpa配置

# spring boot绑定默认端口为8080,这里修改为9000
server.port=9000
#############################################
######datasource --指定MySQL数据库连接信息
#############################################
spring.datasource.url = jdbc:mysql://192.168.200.222:3306/dongxihui_web
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active = 20
spring.datasource.max-idle = 8
spring.datasource.min-idle = 8
spring.datasource.initial-size = 10

#############################################
######Java Persistence Api -- Spring jpa 的配置信息
#############################################
# 指定数据库管理系统
spring.jpa.database = MYSQL
# 是否打印sql到控制台
spring.jpa.show-sql = true
# Hibernate ddl auto
spring.jpa.hibernate.ddl-auto = update
# 指定命名策略
#[org.hibernate.cfg.ImprovedNamingStrategy #org.hibernate.cfg.Default]
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# 指定hibernate方言
spring.jpa.propeties.hibernate.dialect = org.hibernate.dialect.MYSQL
3) 创建一个实体类,比如Cat
package com.lanhuigu.demo.bean;

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

/**
 * 创建一个实体
 * 
 * 1、如何持久化?
 * 使用@Entity注解进行实体类的持久化操作,当JPA检测到我们的实体类有
 * @Entity注解的时候,会在数据库表中生成对应的表结构信息。
 * 
 * 2、如何指定主键以及主键的生成策略?
 * 使用@Id指定主键
 */

@Entity
public class Cat {
	/**
	 * 主键:
	 * 使用@Id指定主键。
	 * 
	 * 生成策略:
	 * 使用代码@GeneratedValue(strategy=GenerationType.AUTO)
	 * 指定主键的生成策略,MySQL默认为自增长。
	 */
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private int id;// 主键
	
	private String catName;// 姓名,默认生成字段名cat_name
	
	private int catAge;// 年龄,默认生成字段名cat_age

	public int getId() {
		return id;
	}

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

	public String getCatName() {
		return catName;
	}

	public void setCatName(String catName) {
		this.catName = catName;
	}

	public int getCatAge() {
		return catAge;
	}

	public void setCatAge(int catAge) {
		this.catAge = catAge;
	}
}
4) 创建一个接口继承于CrudRepository,这个地方于集成于Hibernate与数据库进行交互

package com.lanhuigu.demo.repository;

import org.springframework.data.repository.CrudRepository;

import com.lanhuigu.demo.bean.Cat;

public interface CatRepository extends CrudRepository<Cat, Integer>{

}
5) 创建一个service

package com.lanhuigu.demo.service;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import org.springframework.stereotype.Service;

import com.lanhuigu.demo.bean.Cat;
import com.lanhuigu.demo.repository.CatRepository;

@Service
public class CatService {
	@Resource
	private CatRepository catRepository;
	/**
	 * save,update,delete方法需要绑定事务。
	 * 使用@Transactional进行事务绑定。
	 * 
	 */
	// 保存数据
	@Transactional
	public void save(Cat cat) {
		catRepository.save(cat);
	}
	
	// 删除数据
	@Transactional
	public void delete(int id) {
		catRepository.delete(id);
	}
	
	// 查询数据
	public Iterable<Cat> getAll() {
		return catRepository.findAll();
	}
}
6) 创建一个controller

package com.lanhuigu.demo.controller;

import javax.annotation.Resource;

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

import com.lanhuigu.demo.bean.Cat;
import com.lanhuigu.demo.service.CatService;

@RestController
@RequestMapping("/cat")
public class CatController {
	
	@Resource
	private CatService catService;
	/**
	 * 保存数据
	 * @return
	 */
	@RequestMapping("/save")
	public String save() {
		Cat cat = new Cat();
		//cat.setId(1); // 通过MySQL主键自增长策略生成
		cat.setCatName("hello kitty");
		cat.setCatAge(26);
		catService.save(cat);
		return "save ok";
	}
	/**
	 * 删除数据
	 */
	@RequestMapping("/delete")
	public String delete() {
		catService.delete(1);
		return "delete ok";
	}
	/**
	 * 查询数据
	 */
	@RequestMapping("/getAll")
	public Iterable<Cat> getAll() {
		
		return catService.getAll();
	}

}
7) 启动服务,进行测试(运行启动类)
package com.lanhuigu;



import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;



/**
 * Hello world!
 * 启动类
 */
@SpringBootApplication
public class App {

	
    public static void main( String[] args ) {
        /*System.out.println( "Hello World!" );*/
    	SpringApplication.run(App.class, args);
    }
}


当服务启动时,可以看到数据库中多了一张cat表,表的ddl语句:

CREATE TABLE `cat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cat_age` int(11) NOT NULL,
  `cat_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

访问服务,注意端口号,默认为8080:

http://localhost:9000/cat/save (保存数据)

http://localhost:9000/cat/getAll (查询数据)

http://localhost:9000/cat/delete (删除数据)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值