今天闲来无事在公司练手试了一试jpa操作数据库,下面粘贴上代码
application.yaml:
server:
port: 8090
spring:
datasource:
url: jdbc:mysql://localhost:3306/myTest?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
hibernate:
ddl-auto: update
use-new-id-generator-mappings: true
show-sql: false
Student.class:
@Entity
public class Student implements Serializable{
@Id
@GeneratedValue
private String name;
@Column(nullable = true)
private int age;
@Column(nullable = true)
private String address;
private String collage;
public String getCollage() {
return collage;
}
public void setCollage(String collage) {
this.collage = collage;
}
private String sex;
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
UserRepository:
public interface UserRepository extends JpaRepository<Student,Long> {
List<Student> findByName(String name);
Student findByNameAndAge(String name,Integer age);
Object findByAge(int age);
// Page<Student> findAll(Pageable pageable);
}
UserController:
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@RequestMapping(value = "/names",method = RequestMethod.GET)
@ResponseBody
public Student GetGoodList(@RequestParam("name") String name, @RequestParam(value = "age",required = false,defaultValue = "27") int age){
Student byNameAndAge = userRepository.findByNameAndAge(name, age);
return byNameAndAge;
}
/* @RequestMapping(value = "/finds",method = RequestMethod.GET)
public Page<Student> getEntryByParams(@RequestParam(value = "page",defaultValue = "0") Integer page,
@RequestParam(value = "size",defaultValue = "15") Integer size){
Pageable pageable = new PageRequest(page,size, Sort.Direction.DESC,"age");
return userRepository.findAll(pageable);
}*/
@RequestMapping(value = "/finds01",method = RequestMethod.GET)
public Object getEntryByParams(@RequestParam(value = "age",defaultValue = "15") Integer age){
Object byAge = userRepository.findByAge(age);
return byAge;
}
}
问题一:没有完善application.yaml的时候jpa报错,不能查找到jpa的url
问题二:UserRepository中的findByAge方法最初的返回值写的是int,报错说是返回值不符合要求,后来改成object才完美解决问题