Spring-Data-Jpa
JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这以规范的产品有Hibernate,TopLink等
@Entity 注解表示数据库 映射实体
链接mysql 需要在pom文件中增加2个依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>在application配置文件中增加数据库链接配置
spring: profiles: active: dev datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/dbuser username: root password: 123456 jpa: hibernate: ddl-auto: create show-sql: true
如果出现插入数据库的中文乱,指定链接的编码:
url: jdbc:mysql://127.0.0.1:3306/dbuser?seUnicode=true&characterEncoding=UTF8
声明模型:
package com.asange.demo.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue //自动生成 private Integer id; private String name; private int age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public User() { } }
这里的主键自动生成@GenerateValue
⚠️一定要显示声明默认无参构造函数,否则会编译报错!
第二步 需要建立jpa orm操作仓库服务
package com.asange.demo.repository; import com.asange.demo.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.Repository; public interface UserRepository extends JpaRepository<User, Integer> { }
现在就可以用userRepository进行crud操作啦
package com.asange.demo.controller; import com.asange.demo.model.User; import com.asange.demo.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController public class UserController { @Autowired UserRepository userRepository; /** * 查询所有用户 * * @return */ @GetMapping("/users") public List<User> users() { return userRepository.findAll(); } /** * 增加 * * @param name * @param age * @return */ @PostMapping("/user/add") public User userAdd(@RequestParam("name") String name, @RequestParam("age") int age) { User user = new User(); user.setName(name); user.setAge(age); return userRepository.save(user); } /** * 删除 * * @param id */ @DeleteMapping("/user/del/{id}") public void userDel(@PathVariable("id") Integer id) { userRepository.deleteById(id); } /** * 更新 * * @param id * @return */ @PutMapping("user/update") public User userUpdate(@RequestParam("id") Integer id) { User one = userRepository.getOne(id); one.setAge(one.getAge() + 1); return userRepository.save(one); } }