springboot快速入门(四)——数据库操作
2018-02-08 21:41
736 查看
一、Spring-Data-Jpa的引入
先给出官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/IBM的相关教程:https://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/index.html
springboot整合实战:https://www.jianshu.com/p/9d5bf0e4943f
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。
SpringDataJPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大的减少了JPA作为数据访问方案的代码量,你仅仅需要编写一个接口集成下SpringDataJPA内部定义的接口即可完成简单的CRUD操作
理论的介绍暂不展开,同样,JPA有机会将会单独开博文介绍!
已补充Spring-Data-Jpa快速入门博文:http://www.cnblogs.com/jiangbei/p/8440675.html
二、起步
1.引入依赖<!--spring-boot-starter-data-jpa包含spring-data-jpa、spring-orm 和 Hibernate 来支持 JPA--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- mysql连接--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
2.配置数据源
在yml文件中配置信息:
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/sakila username: root password: root jpa: hibernate: ddl-auto: create show-sql: true
3.添加bean
注意各个注解
package com.example.demo.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * 员工bean * * @author zcc ON 2018/2/8 **/ @Entity public class Emp { /** * 设置主键和自增 */ @Id @GeneratedValue private Integer id; private String name; private Integer age; /** * 必选无参构造器 */ public Emp() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
4.启动测试
启动程序,可以看到数据库创建了一个emp对应的表:
package com.example.demo.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * girl的bean * * @author zcc ON 2018/2/9 **/ @Entity public class Girl { @Id @GeneratedValue private Integer id; private String name; private Integer age; public Girl() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
Girl
controller:
package com.example.demo; import com.example.demo.bean.Girl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * controller * * @author zcc ON 2018/2/9 **/ @RestController public class GirlController { /** * 简单的逻辑,这里就暂时省略service了 */ @Autowired private GirlRepository girlRepository; @GetMapping(value = "/girls") public List<Girl> getList() { // 直接调用findAll()即可,已经封装了! return girlRepository.findAll(); } }
dao:
package com.example.demo; import com.example.demo.bean.Girl; import org.springframework.data.jpa.repository.JpaRepository; /** * girl持久层 * 简单的CRUD等操作无需实现! * @author zcc **/ public interface GirlRepository extends JpaRepository<Girl, Integer>{ }
由于我们配置了show-sql,我们是可以在日志看到sql的:
使用postman测试结果:
2.POST
package com.example.demo; import com.example.demo.bean.Girl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * controller * * @author zcc ON 2018/2/9 **/ @RestController public class GirlController { /** * 简单的逻辑,这里就暂时省略service了 */ @Autowired private GirlRepository girlRepository; @GetMapping(value = "/girls") public List<Girl> getList() { // 直接调用findAll()即可,已经封装了! return girlRepository.findAll(); } /** * 可以使用此方式进行参数绑定 */ /*@PostMapping(value = "/girls") public String addGirl(@RequestParam("age") Integer age, String name) { return null; }*/ /** * 更推荐bean进行绑定(这里规则和springMVC是一样的) * @param girl 实体 * @return */ @PostMapping(value = "/girls") public Girl addGirl(Girl girl) { // 直接返回这个实体类也可以 return girlRepository.save(girl); } }
测试结果:
3.其他PUT GET DELETE
package com.example.demo; import com.example.demo.bean.Girl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * controller * * @author zcc ON 2018/2/9 **/ @RestController public class GirlController { /** * 简单的逻辑,这里就暂时省略service了 */ @Autowired private GirlRepository girlRepository; @GetMapping(value = "/girls") public List<Girl> getList() { // 直接调用findAll()即可,已经封装了! return girlRepository.findAll(); } /** * 可以使用此方式进行参数绑定 */ /*@PostMapping(value = "/girls") public String addGirl(@RequestParam("age") Integer age, String name) { return null; }*/ /** * 更推荐bean进行绑定(这里规则和springMVC是一样的) * @param girl 实体 * @return */ @PostMapping(value = "/girls") public Girl addGirl(Girl girl) { // 直接返回这个实体类也可以 return girlRepository.save(girl); } @GetMapping(value = "/girls/{id}") public Girl getGirlById(@PathVariable("id") Integer id) { // 推荐使用更加通用的findOne()! return girlRepository.findOne(id); } @PutMapping(value = "/girls/{id}") public Girl updateGirlById(@PathVariable("id") Integer id, String name) { Girl girl = new Girl(); girl.setId(id); girl.setName(name); return girlRepository.save(girl); } @DeleteMapping(value = "/girls/{id}") public String deleteGirlById(@PathVariable("id") Integer id) { girlRepository.delete(id); return "删除ID为:" + id + " 的女生成功!"; } }
相关结果:
设置请求头: Content-Type:application/x-www-form-urlencoded
如果需要自定义查询(例如按照年龄查询),需要在repository中先进行声明(很多都有现成的,直接声明即可,无需实现!)
public interface GirlRepository extends JpaRepository<Girl, Integer>{ // 新增自定义查询方法 List<Girl> findByAge(Integer age); }
@GetMapping(value = "/girls/age/{age}") public List<Girl> getListByAge(@PathVariable("age") Integer age) { return girlRepository.findByAge(age); }
相关文章推荐
- Spring Boot快速入门(五):使用MyBatis(注解形式)进行数据库操作
- Spring Boot入门(3)-数据库操作
- SpringBoot入门:(2)jpa方式操作数据库
- spring boot summer快速开发框架之《一、数据库操作:一分钟完成json接口》
- SpringBoot入门(五)数据库操作入门
- SpringBoot入门(三)--数据库操作&&Spring-data-jpa的使用
- Spring Boot快速入门(六):thymeleaf
- Spring Boot【快速入门】
- Spring Boot 快速入门
- Spring Boot实战之Rest接口开发及数据库基本操作
- 数据库操作 —— 快速入门:基本配置和使用、读写分离 & 数据库事务
- SpringBoot 数据库操作(下)
- Spring Boot快速入门
- (Spring Boot框架)快速入门
- Spring Boot RabbitMQ快速入门 (2)
- spring boot 整合 redis,使用@Cacheable,@CacheEvict,@CachePut,jedisPool操作redis数据库
- SpringBoot项目 使用Sprin Data Jpa 实现数据库的 增 ,删, 改, 查操作
- Spring基础:快速入门spring boot(8):使用Junit进行测试
- SpringBoot快速入门
- Spring Boot【快速入门】