使用jpa操作mysql数据库的注意事项

今天闲来无事在公司练手试了一试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才完美解决问题

猜你喜欢

转载自blog.csdn.net/love_zy0216/article/details/86985199
今日推荐