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 (删除数据)