創建一個 @Entity
src/main/java/example/example1/User.java:
package com.example.example1;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@Table(name = "sys_user")
//Springboot2.2.1集成的Spring data jpa比較新,需要加上如下配置
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
// @GeneratedValue
private Long id;
@Column
private String name;
@Column(name = "email",length = 64) //這是和數據表對應的一個列
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(length = 20)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
第五步:創建一個 Repository
src/main/java/example/example1/UserRepository.java:
package com.example.example1;
import org.springframework.data.repository.CrudRepository;
// public interface UserRepository extends JpaRepository<User,Integer> {
public interface UserRepository extends CrudRepository<User, Long> {
}
CrudRepository 接口
CrudRepository 接口提供了最基本的對實體類的添刪改查操作
PagingAndSortingRepository接口
該接口提供了分頁與排序功能
Iterable findAll(Sort sort); //排序
Page findAll(Pageable pageable); //分頁查詢(含排序功能)
JpaRepository接口
該接口提供了JPA的相關功能
List findAll(); //查找所有實體
List findAll(Sort sort); //排序、查找所有實體
List save(Iterable<? extends T> entities);//保存集合
void flush();//執行緩存與數據庫同步
T saveAndFlush(T entity);//強制執行持久化
void deleteInBatch(Iterable entities);//刪除一個實體集合
JpaSpecificationExecutor接口
不屬於Repository體系,實現一組 JPA Criteria 查詢相關的方法
注意也可以自定義Repository的方法
@Query(value="select * from tbl_user where name like %?1" ,nativeQuery=true)
List<User > findSele(String name);
例子:
比如:定義下面這麼一個方法,就可以在外界使用了。
Employee findByName(String name);
也就是說,上面的方法會被解析成SQL語句:
select * from Employee where name = ?
是不是覺得很方便!!!!
第六步:創建一個 controller
package com.example.example1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(path = "/demo")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping(path = "/add")
public void addNewUser(@RequestParam String name, @RequestParam String email) {
User n = new User();
n.setName(name);
n.setEmail(email);
userRepository.save(n);
}
@GetMapping(path = "/all")
@ResponseBody
public Iterable<User> getAllUsers() {
return userRepository.findAll();
}
}
第七步:直接運行 Example1Application 的 main() 函數即可