Spring Boot JPA总结

本文详细介绍如何使用Spring Boot结合JPA实现一个简单的增删查改应用,包括项目搭建、依赖配置、实体类定义、接口及服务层实现等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.添加相应的依赖包

2.需要在application.properties文件添加配置

3.需要创建一个实体类,比如Cat

4.需要创建一个接口继承CrudRepository;

5.需要创建一个Service;

6.需要创建一个Controller;

7.代码测试

<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.kfit</groupId>
	<artifactId>spring-boot-hello</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!--Spring boot 父节点依赖,引入这个依赖后想相关的引入就不需要添加version配置,spring boot会自动选择最合适的版本进行添加 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.1.RELEASE</version>
	</parent>
	<properties>
		<project.build.sourceEconding>UTF-8</project.build.sourceEconding>
		<!--指定一下jdk版本 。默认是jdk1.6 -->
		<java.version>1.7</java.version>
	</properties>


	<!--spring-boot-start-web:MVC,AOP的依赖包...... -->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<!-- <version></version> 由于我们在上面指定了parent(spring boot) -->
		</dependency>
		<!-- 添加 fastJson依赖包 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.15</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
			<scope>true</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>



	</dependencies>

	<!--构建节点 -->
	<build>
		<plugins>
			<!-- 在这里添加springloader plugin -->
			<!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin 
				</artifactId> <dependencies> springloaded hot deploy <dependency> <groupId>org.springframework</groupId> 
				<artifactId>springloaded</artifactId> <version>1.2.4.RELEASE</version> </dependency> 
				</dependencies> <executions> <execution> <goals> <goal>repackage</goal> </goals> 
				<configuration> <classifier>exec</classifier> </configuration> </execution> 
				</executions> </plugin> -->
			<!--这是spring boot devtool plugin -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!--fork : 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart -->
					<fork>true</fork>
				</configuration>
			</plugin>




		</plugins>
	</build>
</project>


########################################################
###datasource -- \u6307\u5b9amysql\u6570\u636e\u5e93\u8fde\u63a5\u4fe1\u606f.
########################################################
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10


########################################################
### Java Persistence Api --  Spring jpa\u7684\u914d\u7f6e\u4fe1\u606f.
########################################################
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
#[org.hibernate.cfg.ImprovedNamingStrategy  #org.hibernate.cfg.DefaultNamingStrategy]
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect



创建实体类

package com.kfit.demo.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
 
/**
 * @author Administrator
 * 创建了一个实体类
 * 使用@Entity进行实体类的持久化操作,当JPA检测到我们的实体类当中有@Entity注解的时候,会在数据库生成对应的表结构数据
 */
/**
 * @author Administrator
 * 使用@Id  
 * 使用@GeneratedValue(straregy=GenerarionType.AUTO)
 * 制定主键的
 */
@Entity
public class Cat {
@Id @GeneratedValue(strategy=GenerationType.AUTO) 	
 private int id;//主键
 private String catName;//姓名
 private int catAge;//年龄
public Cat(int id, String carName, int catAge) {
	super();
	this.id = id; 
	this.catName = carName;
	this.catAge = catAge;
}
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getCarName() {
	return catName;
}
public void setCarName(String carName) {
	this.catName = carName;
}
public int getCatAge() {
	return catAge;
}
public void setCatAge(int catAge) {
	this.catAge = catAge;
}
public Cat() {
	super();
}
 
}

创建一个接口继承CrudRepository

 

 package com.kfit.demo.repository;

import org.springframework.data.repository.CrudRepository;

import com.kfit.demo.bean.Cat;

/**
 * 
 */
public interface CatRepository extends CrudRepository<Cat, Integer>{

}
创建一个Service

package com.kfit.demo.service;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import org.springframework.stereotype.Service;

import com.kfit.demo.bean.Cat;
import com.kfit.demo.repository.CatRepository;

/**
 * @author Administrator
 *
 */
@Service
public class CatService {
@Resource
private CatRepository catRepository;
/**
 * save ,update ,delete 方法需要事无绑定,
 * 使用@Transcational 进行事务的绑定
 */


/**保存数据
 * @param cat
 */
@Transactional
public void save(Cat cat){
	catRepository.save(cat);
}

/**
 * 删除数据
 */
@Transactional 
public void delete(int id){
	catRepository.delete(id);
}

/**
 * 查询数据
 * @return
 */
public Iterable<Cat>getAll(){
	return catRepository.findAll();
}
 
}

创建一个Controller

package com.kfit.demo.controller;

import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.kfit.demo.bean.Cat;
import com.kfit.demo.service.CatService;

@RestController
@RequestMapping("/cat")
public class CatController {
  @Resource
  private CatService catService;
  @RequestMapping("/save")
  private String save(){
	Cat cat = new Cat();
	cat.setCarName("jack");
	cat.setCatAge(14);
	catService.save(cat);
	return "save ok.";
  }
  
  @RequestMapping("/delete")
  private String delete(){
	  catService.delete(1);  
	  return "delete ok";
  }
  
  @RequestMapping("/getAll")
  public Iterable<Cat>getAll(){
	  return catService.getAll();  
  }
 
}

最后的启动类

package com.kfit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.HttpMessageConverter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
/**
 * @author mz
 *在这里我们使用@SpringBootAppliction指定这是一个spring的应用程序
 */
@SpringBootApplication
public class App /*extends WebMvcConfigurerAdapter*/ {
	/*@Override
	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
		super.configureMessageConverters(converters);
		*//**
		 *1、需要先定义一个conver转换消息的对象
		 *2、添加fastjson的配置信息,比如:是否要格式化返回的json数据;
		 *3、在convert中添加配置信息
		 *4.将convert添加到converters中 
		 *//*
		//1.需要先定义一个convert转换消息的对象
		FastJsonHttpMessageConverter fastconverter = new FastJsonHttpMessageConverter();
		//2.添加fastjson的配置信息,比如:是否要格式化返回的json数据;
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		//是否需要格式化
		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
		//3、在convert中添加配置信息
	    fastconverter.setFastJsonConfig(fastJsonConfig);
	    //4.将convert添加到converters中 
	    converters.add(fastconverter);
	}*/
	/**
	 * 在这里我们使用@Bean 注入fastJsonHttpMessageConvert
	 * @return
	 */
	@Bean
	public HttpMessageConverters fastJsonHttpMessageConverters() {
		//1.需要先定义一个convert转换消息的对象
		FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
		//2.添加fastjson的配置信息,比如:是否要格式化返回的json数据;
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		//3、在convert中添加配置信息
		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
		fastConverter.setFastJsonConfig(fastJsonConfig);
		HttpMessageConverter<?> converter = fastConverter;
		return new HttpMessageConverters(converter);
	}
	 /** 
	 *在main方法中启动我们的应用程序
	 * date: 2017年5月7日 下午4:34:36 <br/> 
	 */  
	public static void main(String[] args) {
		 SpringApplication.run(App.class, args);
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值