Spring Data是一个用于简化数据访问,并支持云服务的开源框
使用完成Spring Data JPA对user表的CRUD操作。
pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.itheima</groupId> <artifactId>springboot-jpa</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-jpa</name> <description>springboot整合jpa</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</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-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>
编写pojo
package com.programme.pojo; import javax.persistence.*; /** * @program: springboot * @description: ${description} * @author: Mr.zw * @create: 2021-05-11 20:30 **/ @Table(name = "t_user")//将实体和数据库的表关系关联起来 @Entity//标识这个对象是一个数据库的映射对象 public class User { /** * TABLE:将数据库表的主键保存在一张表中进行管理 * SEQUENCE:Oracle数据库主键自增的方式 * IDENTITY:使用数据库的主键自增 * AUTO:将主键自增交给JPA框架帮我们进行管理 */ @Id//标识该属性为数据库的主键 @GeneratedValue(strategy = GenerationType.IDENTITY)//标识主键的自增的方式 private Integer id; //@Column(name = "username")将数据库字段关联起来,如果名字一样则可以忽略 private String username; private String password; private String address; @Override public String toString() { return "User{" + "id=" + id + ", name=‘" + username + ‘\‘‘ + ", password=‘" + password + ‘\‘‘ + ", address=‘" + address + ‘\‘‘ + ‘}‘; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return username; } public void setName(String name) { this.username = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
编写dao接口
package com.programme.dao; import com.programme.pojo.User; import org.springframework.data.jpa.repository.JpaRepository; /** * @program: springboot * @description: ${description} * @author: Mr.zw * @create: 2021-05-11 20:55 **/ public interface UserDao extends JpaRepository<User,Integer> { }
编写service接口以及实现类
package com.programme.service; import com.programme.pojo.User; import java.util.List; /** * @program: springboot * @description: ${description} * @author: Mr.zw * @create: 2021-05-11 20:59 **/ public interface UserService { //查询全部 public List<User>findAll(); //主键查询 public User findOne(Integer id); //修改 public void update(User user); //删除 public void delete(Integer id); //新增 public void insert(User user); }
package com.programme.impl; import com.programme.dao.UserDao; import com.programme.pojo.User; import com.programme.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * @program: springboot * @description: ${description} * @author: Mr.zw * @create: 2021-05-11 21:07 **/ @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; //查询全部 @Override public List<User> findAll() { return userDao.findAll(); } //主键查询 @Override public User findOne(Integer id) { return userDao.findById(id).get();//.findById()返回选择器对象.get()返回User } //修改 @Override public void update(User user) { //根据主键进行判断,若主键存在,执行更新,若主键不存在或者为空,执行新增 userDao.save(user); } //删除 @Override public void delete(Integer id) { userDao.deleteById(id);//deleteAll 删除全部 } //新增 @Override public void insert(User user) { userDao.save(user); } }
编写controller
package com.programme.controller; import com.programme.pojo.User; import com.programme.service.UserService; import org.hibernate.annotations.GeneratorType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @program: springboot * @description: ${description} * @author: Mr.zw * @create: 2021-05-11 21:18 **/ @RestController @RequestMapping(value = "/jpa") public class UserController { @Autowired private UserService userService; //查询全部 @PostMapping(value = "/findAll") public List<User> findAll(){ return userService.findAll(); } //主键查询 @GetMapping(value = "/findById") public User findById(@PathVariable Integer id){ return userService.findOne(id); } //修改 @GetMapping(value = "/updateUser") public void updateUser(User user){ userService.update(user); } //删除 @GetMapping(value = "/deleteById") public void deleteById(@PathVariable Integer id){ userService.delete(id); } //新增 @GetMapping(value = "/insert") public void insert(User user){ userService.insert(user); } }
配置application
server: port: 18081 servlet: context-path: /springboot-jpa spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: root password: root jpa: database: mysql show-sql: true generate-ddl: true #开启建表策略 hibernate: ddl-auto: validate #hibernate.ddl-auto,建表策略: #update:每次运行程序,没有表会新建表,表内有数据不会清空,只会更新 #create:每次运行程序,没有表会新建表,表内有数据会清空 #create-drop:每次程序结束的时候会清空表 #validate:运行程序会校验数据与数据库的字段类型是否相同,不同会报错
原文:https://www.cnblogs.com/demowei/p/14757923.html