springboot+jpa小案例

今天对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方式建库的话,一开始数据库是空的,查出来是空的[]

所以在查之前要记得插入数据哦

猜你喜欢

转载自blog.csdn.net/qq_34525938/article/details/82263234