无需写什么关于数据库访问的代码一个基本的 CURD 的功能就出来了
以下通过 IDEA实现基本的Spring Boot JPA
(1)pom.xml引入(接上一篇选择的 SQL 功能): 添加MySQL数据库驱动依赖, 添加spring-boot-starter-data-jpa依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>(2)application.properties 配置文件内容
################################ ##### 指定MySQL 连接信息 ################################ spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.max-actives=20 spring.datasource.max-idle=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 ################################ ##### 配置 JPA ################################ spring.jpa.database=mysql ##### 是否显示sql语句 spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update ##### 配置实体后,会创建表结构,就是如下这句话 spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect总览: (1)创建Cat实体类 (2)创建jpa repository 接口,操作持久化 (3)创建service 类 (4)创建restful 请求类 (5)测试
(1)Bean
package com.example.crud.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; /** * 创建实体类,如何持久化 * 1.使用@Entity 进行实体类的持久化操作, * 当JPA检测到实体类中有@Entity 注解时候,会在数据库中创建相应的表结构 */ @Entity public class Cat { /** * 使用@Id 指定主键 * 使用@GeneratedValue(strategy=GeneratedValue.Auto) * MySQL 默认的是自增长 * @return */ @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String catName; private String catAge; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCatName() { return catName; } public void setCatName(String catName) { this.catName = catName; } public String getCatAge() { return catAge; } public void setCatAge(String catAge) { this.catAge = catAge; } }(2)启动项目 注意:关闭基础一种注释的如下代码 //@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) (3)验证数据库,自动生成表结构 (3)创建Repository 是接口继承CrudRepository
package com.example.demo.repository; import com.example.demo.bean.Cat; import org.springframework.data.repository.CrudRepository; import java.io.Serializable; public interface CatRepository extends CrudRepository<Cat, Serializable> { }(4)创建CatService 注入
package com.example.demo.service; import com.example.demo.bean.Cat; import com.example.demo.repository.CatRepository; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.transaction.Transactional; @Service public class CatService { @Resource private CatRepository catRepository; /** * 使用@Transactional 进行事务绑定 */ public void save(Cat cat){ catRepository.save(cat); } @Transactional public void delete(int id){ catRepository.deleteById(id); } public Iterable<Cat> getAll(){ return catRepository.findAll(); } }(5)编写Restful 风格接口
package com.example.demo.controller; import com.example.demo.bean.Cat; import com.example.demo.service.CatService; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping("/cat") public class CatController { @Resource private CatService catService; @RequestMapping("/save") public String save(){ Cat cat = new Cat(); cat.setCatName("jack"); cat.setCatAge(3); catService.save(cat); return " save is ok"; } @RequestMapping("/delete") public String delete(){ catService.delete(1); return " delete is ok"; } @RequestMapping("/getAll") public String getAll(){ catService.getAll(); return " getAll is ok"; } }(6)测试 http://127.0.0.1:8080/cat/save 刷新一次执行一次 删除测试
控制台显示SQL 语句
本节需要了解以下内容
