(5)spring boot下 spring Data JPA的使用

来源:互联网 发布:编程兼职网站有哪些 编辑:程序博客网 时间:2024/04/30 19:18

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,这里修改为9000server.port=9000###################################################datasource --指定MySQL数据库连接信息#############################################spring.datasource.url = jdbc:mysql://192.168.200.222:3306/dongxihui_webspring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.max-active = 20spring.datasource.max-idle = 8spring.datasource.min-idle = 8spring.datasource.initial-size = 10###################################################Java Persistence Api -- Spring jpa 的配置信息############################################## 指定数据库管理系统spring.jpa.database = MYSQL# 是否打印sql到控制台spring.jpa.show-sql = true# Hibernate ddl autospring.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指定主键 */@Entitypublic class Cat {/** * 主键: * 使用@Id指定主键。 *  * 生成策略: * 使用代码@GeneratedValue(strategy=GenerationType.AUTO) * 指定主键的生成策略,MySQL默认为自增长。 */@Id @GeneratedValue(strategy=GenerationType.AUTO)private int id;// 主键private String catName;// 姓名,默认生成字段名cat_nameprivate int catAge;// 年龄,默认生成字段名cat_agepublic 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;@Servicepublic class CatService {@Resourceprivate CatRepository catRepository;/** * save,update,delete方法需要绑定事务。 * 使用@Transactional进行事务绑定。 *  */// 保存数据@Transactionalpublic void save(Cat cat) {catRepository.save(cat);}// 删除数据@Transactionalpublic 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 {@Resourceprivate 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! * 启动类 */@SpringBootApplicationpublic 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 0