2.Spring Data JPA和Springboot简单整合操作
springboot是轻量级零配置的框架。在不用配置过多的spring配置文件,自动整合需要的框架。大部分配置可以通过application.yml文件或者application.properties来配置,spring data jpa配置可以通过springboot整合,进行基本的数据操作(CRUD)。本文就以简单的例子来说明。
1.工程结构
本工程用maven来整合,是一个简单的maven工程,通过idea软件可以很容易的生成,由于实例较为简单,没有拆分模块。工程结构图如图所示:
2.pom依赖
由于要和springboot整合,所以要导入springboot的stater依赖,还有单元测试的test依赖,JPA数据操作的data-jpa依赖,和mysql依赖。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>edu.dlmu.sei</groupId> <artifactId>Springboot-JPA</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.application.properties和SpringBootJpaApplication
application.properties用来配置数据库DataSource参数,SpringBootJpaApplication.class作为spring-boot的入口执行类。
#db spring.datasource.name=test spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot spring.datasource.username=root spring.datasource.password=root
package edu.dlmu.sei; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Created by zhangtuo on 2016/12/17. */ @SpringBootApplication public class SpringBootJpaApplication { public static void main(String[] args) { SpringApplication.run(SpringBootJpaApplication.class, args); } }
3.Entity
声明实体Cat和数据库cat表对应,并添加jpa注解,由于cat表的id用uuid来生成,所以在id加上“uuid”的生成注解。
@Entity public class Cat { @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") @Column(name = "id") private String id; @Column(name = "name") private String name; public Cat(){} public Cat(String id, String name) { this.id = id; this.name = name; } //省略get和set函数 }
4.Repository
设计接口CatRepository,该接口继承了JpaRepository接口,具备了基本的增删查的操作,另外,加上根据属性定义的函数和更新操作。
package edu.dlmu.sei.repository; import edu.dlmu.sei.entity.Cat; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import java.util.List; /** * Created by zhangtuo on 2016/12/17. */ @Repository public interface CatRepository extends JpaRepository<Cat, String>{ List<Cat> findByName(String name); @Modifying @Query("update Cat c set c.name =?1 where id =?2") void updateById(String name, String id); }
5.service
设计Cat实体的业务逻辑接口和实现类,这里接口省略,实现类主要是通过注入的CatRepository的来对数据进行基本的增删改查操作。
package edu.dlmu.sei.service.impl; import edu.dlmu.sei.entity.Cat; import edu.dlmu.sei.repository.CatRepository; import edu.dlmu.sei.service.CatService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.sql.SQLException; import java.util.List; /** * Created by zhangtuo on 2016/12/17. */ @Service public class CatServiceImpl implements CatService{ @Autowired private CatRepository catRepository; @Override public List<Cat> queryAll() { return catRepository.findAll(); } @Override public Cat queryById(String id) { return catRepository.findOne(id); } @Override public List<Cat> queryByName(String name) { return catRepository.findByName(name); } @Transactional @Override public Boolean save(Cat cat) { Cat cat1 = catRepository.save(cat); if (cat1 != null) { return true; } else { return false; } } @Transactional @Override public Boolean deleteById(String id) { try { catRepository.delete(id); return true; } catch (Exception e) { e.printStackTrace(); } return false; } @Transactional @Override public Boolean updateById(String name, String id) { try { catRepository.updateById(name, id); return true; } catch (Exception e) { e.printStackTrace(); } return false; } }
6.JunitTest
对业务逻辑进行基本功能的单元测试。
package edu.dlmu.sei.test; import edu.dlmu.sei.SpringBootJpaApplication; import edu.dlmu.sei.entity.Cat; import edu.dlmu.sei.service.CatService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; import java.util.UUID; /** * Created by zhangtuo on 2016/12/17. */ @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(SpringBootJpaApplication.class) public class SpringBootJpaTest { @Autowired private CatService catService; @Test public void testSaveCat() { Cat cat = new Cat(UUID.randomUUID().toString(), "TOM"); Boolean result = catService.save(cat); if (result) { System.out.println("增加Cat成功"); } else { System.out.println("增加Cat失败"); } } @Test public void testQueryAll() { List<Cat> cats = catService.queryAll(); for (int i=0; i<cats.size();i++) { System.out.println("Cat`s name = " + cats.get(i).getName()); } } @Test public void testQueryById() { System.out.println("cat`s name = "+ catService.queryById("8a86018e590bb75601590bb75a000000").getName()); } @Test public void testQueryByName() { List<Cat> cats = catService.queryByName("TOM"); for (int i=0; i < cats.size();i++) { System.out.println("Cat`s id = " + cats.get(i).getId()); } } @Test public void deleteById() { Boolean result = catService.deleteById("8a86018e590bb75601590bb75a000000"); if (result) { System.out.println("删除成功"); } else { System.out.println("删除失败"); } } @Test public void updateById() { Boolean result = catService.updateById("GARFIELD","xx"); if (result) { System.out.println("更新成功"); } else { System.out.println("更新失败"); } } }
【注解】这里说明一下,单元测试类的@SpringApplicationConfiguration注解,1.4.x的springBoot已经过时,现在可以通过@SpringBootTest来代替。
转载于:https://my.oschina.net/zhangtuoDMU/blog/807615
- 点赞
- 收藏
- 分享
- 文章举报
- SpringBoot-整合-SpringData jpa -简单实用(8)
- 使用spring-data-jpa+spirngboot整合swagger+vuejs实现一套简单的增删改查demo
- idea springboot之简单demo实践--spring data jpa操作数据库
- SpringBoot简单整合SpringDataJpa
- Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
- SpringBoot学习(三)(整合JdbcTemplate、mybatis注解版、springdatajpa)
- JPA + SpringData操作数据库操作数据库原来可以这么简单 ---- 深入了解 JPA - 1
- SpringBoot整合SpringData(JPA)
- springboot使用spring-data-jpa操作MySQL数据库
- Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8
- SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
- Spring Boot整合Spring Data JPA过程解析
- Spring Boot(7)— Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
- SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
- 在spring Boot中使用Spring-data-jpa操作数据库
- springboot后台服务搭建(三 整合mysql、spring-data-jpa)
- Spring Boot (五)Spring Data JPA 操作 MySQL 8
- SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
- SpringBoot整合MongoDB JPA,测试MongoRepository与MongoTemplate用法,简单增删改查+高级聚合...
- Spring boot结合Spring-Data-JPA操作MySQL数据库