定义Entity层实体类User:
User.java类包含id,lastname,password三个属性
package com.example.demo.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "usetable")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String lastname;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getPassword() {
return password;
}
public void setPassword(String string) {
this.password = string;
}
@Override
public String toString() {
return "User [id=" + id + ", lastname=" + lastname + ", password=" + password + "]";
}
}
定义Dao层或Repository层的接口UserRepository.java
package com.example.demo.repository;
import java.util.List;
import java.util.Optional;
import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* 定义一个dao层接口,此接口只需要继承JpaRepository和JpaSpecificationExecutor接口即可,该接口就具备了增删改 * 查和分页等功能。
* JpaRepository<实体类类型,主键类型>:完成基本的CRUD操作
* JpaSpecificationExecutor<实体类类型>:用于复杂查询(分页等查询操作)
* @author cxl(RUCmatthewchen)
*
*/
@Repository // 创建数据库操作接口
public interface UserRepository extends JpaRepository<User, Integer> {
// 利用关键字定义查询方法(不完全列举) 注意实体类里有的属性才可以查
List<User> findByLastname(String lastname);// 用lastname属性来查
Optional<User> findById(Integer id);// 用id属性来查
List<User> findByPassword(String password);//利用password来查
//对照表和规则完成下属的查询方法构建
List<User> findByIdANDLastname(Integer id,String lastname);//构造方法查id和lastname同时满足的记录,and关键字使用
List<User> findByIdOrPassword(Integer id,String password);//or关键字使用
List<User> findByIdEqueals(Integer id);//equals关键字
List<User> findByIdBetween(Integer id);//Between关键字
List<User> findByIdLessThan(Integer id);//lessthan关键字
List<User> findByLastnameLike(String lastname);//like关键字
List<User> findByIdIn(Integer id);//in关键字
//简单的查询直接在Controller里定义就行
}
定义Controller层的UserController.java
package com.example.demo.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.hutool.crypto.digest.BCrypt;
@Controller //声明此类为控制器
@RequestMapping(value = "/theuser") //映射此类的访问路径
public class UserController {
@Autowired
private UserRepository userRepository;
@RequestMapping(value = "/finduser")
@ResponseBody
public String findUser(){//使用简单的默认查询方法
userRepository.findAll();
userRepository.count();
return "success";
}
@RequestMapping(value = "/newone")
@ResponseBody
public String newUser(){
User user = new User();
user.setLastname("chenlong");
user.setId(23121321);
user.setPassword(BCrypt.hashpw("123456"));
userRepository.save(user);//增操作 存数据
//查询所有数据
List<User> list = userRepository.findAll();
for(User us : list){
System.out.println(us);
}
//userRepository.delete(user);//删除
return "success";
}
@RequestMapping(value = "/finduser2")
@ResponseBody
public String findUser2(){//使用接口里构造的的查询方法
userRepository.findById(1);
userRepository.findByLastnameLike("jack");
userRepository.findByIdANDLastname(1, "jack");
userRepository.findByIdIn(25);
return "success";
}
}