今天对jpa比较感兴趣,想要搜索个jpa小案例来学习,无奈网上的资源都不是我想要的
最后跑到慕课网看了廖师兄的《2小时搞定springboot》https://www.imooc.com/learn/767
然后把一个简单的实现连接数据库,并查询出数据JPA小案例贴在这里
毕竟相比较看视频,看博文的速度还是快很多的
首先贴出0.目录结构,这个可以到spring官网弄个模板,或者编译器新建springboot项目就会有一个框架,再慢慢加文件就可以
然后是修改1.pom.xml文件,主要是增加JPA的maven依赖,还有要连接数据库,所以要加上jdbc,当然还有web
<?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>com.iceflame</groupId>
<artifactId>SpringbootJPA</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringbootJPA</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
接着修改2.配置文件【yml】,主要加一些连接数据库的配置,还有jpa的配置(生成的是properties,改成yml文件支持树状,更美观)
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbgirl
username: root
password: root
jpa:
show-sql: true
hibernate:
ddl-auto: create
这里的create,是运行springboot就自动创建表的意思,如果后面不想创建了,可以改成update或者其他,用户名和密码改成自己的,注意先要创建dbgirl的数据库,不然会报找不到数据库的错误。
接着添加实体类,有的地方包是domain, 有的叫bean,有的叫pojo ,反正都是实体类
3.实体类
package com.iceflame.demo.pojo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Girl {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String cupSize;
public Girl() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
}
这里两个注解,一个是主键的意思,一个是设置自增,至于字段的话,就只有一个id,和一个cupsize
4.GirlReposity类
这个直接写一个空类就可以,继承JPAReposity,然后就可以用JPA方式直接调方法
package com.iceflame.demo.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.iceflame.demo.pojo.Girl;
public interface GirlRepository extends JpaRepository<Girl,Integer>{
}
5.Controller层,这里因为只是为了JPA连接数据库的简便性,所以跳过了service层,实际开发中还是有service层和相对应的impl的
package com.iceflame.demo.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.iceflame.demo.pojo.Girl;
import com.iceflame.demo.repository.GirlRepository;
@RestController
public class GirlController {
@Autowired
private GirlRepository girlRepository;
/**
* 增加一个女孩
* @param cupSize
* @return
*/
@PostMapping(value="/add")
public Girl girlAdd(@RequestParam(value="cupSize") String cupSize)
{
Girl girl=new Girl();
girl.setCupSize(cupSize);
return girlRepository.save(girl);
}
/**
* 删除一个女孩
* @param id
*/
@DeleteMapping(value="/delete/{id}")
public void girlDelete(@PathVariable(value="id") Integer id)
{
girlRepository.deleteById(id);
}
@PutMapping(value="/modify/{id}")
public Girl girlModify(@PathVariable(value="id") Integer id,
@RequestParam(value="cupSize") String cupSize)
{
Girl girl=new Girl();
girl.setId(id);
girl.setCupSize(cupSize);
return girlRepository.save(girl);
}
/**
* 查找女孩列表
* @return
*/
@GetMapping(value="/list")
public List<Girl> girlList()
{
return girlRepository.findAll();
}
}
这里用注解注入了Reposity, 然后直接调findAll()方法就可以查出所有的女孩信息
6.启动看结果
把上面这些都配置完了之后,就可以启动启动类,去浏览器看结果啦
注意这里演示的是list查所有的方法,如果使用create方式建库的话,一开始数据库是空的,查出来是空的[]
所以在查之前要记得插入数据哦