SpringBoot入门系列:第五篇 JPA mysql

xiaoxiao2021-02-28  141

一,准备工作,建立spring-boot-sample-mysql工程

1、http://start.spring.io/

     A、Artifact中输入spring-boot-sample-MySQL

     B、勾选Web下的web

     C、勾选SQL下的JPA MYSQL

2、Eclips中导入工程spring-boot-sample-mysql

     A、解压快捷工程spring-boot-sample-mysql到某文件夹

     B、eclips中file->import->Import Existing Maven Projects-->Select Maven projects-->finish导入工程

当然,之前有相关的项目基础结构,也只需要把对应的pom.xml里面的配置复制过来即可...无需如此繁琐的操作

二,使用JPA,构建业务对象及访问库

1、在包com.example下建立domain文件夹

2、在domain中建立类Person

[java]  view plain  copy package com.example.domain;      import javax.persistence.Entity;   import javax.persistence.GeneratedValue;   import javax.persistence.Id;      @Entity   public class Person {              @Id       @GeneratedValue       private Long id;              private String name;              private Integer age;              private String address;          public Person() {           super();       }          public Person(Long id, String name, Integer age, String address) {           super();           this.id = id;           this.name = name;           this.age = age;           this.address = address;       }          public Long getId() {           return id;       }          public void setId(Long id) {           this.id = id;       }          public String getName() {           return name;       }          public void setName(String name) {           this.name = name;       }          public Integer getAge() {           return age;       }          public void setAge(Integer age) {           this.age = age;       }          public String getAddress() {           return address;       }          public void setAddress(String address) {           this.address = address;       }      }   注意:构造函数

3、在包com.example下建立repository文件夹

4、在repository中建立接口PersonRepository

[java]  view plain  copy package com.example.repository;      import java.util.List;      import org.springframework.data.jpa.repository.JpaRepository;   import org.springframework.data.jpa.repository.Query;   import org.springframework.data.repository.query.Param;   import org.springframework.stereotype.Repository;      import com.example.domain.Person;      @Repository   public interface PersonRepository extends JpaRepository<Person,Long> {          List<Person> findByName(String name);              List<Person> findByAddress(String address);              List<Person> findByNameAndAddress(String name,String address);              @Query("select p from Person p where p.name=:name and p.address=:address")       List<Person> withNameAndAddressQuery(@Param("name")String Name,@Param("address")String address);   }   5、在web中建立DataController

[java]  view plain  copy package com.example.web;      import java.util.List;      import org.slf4j.Logger;   import org.slf4j.LoggerFactory;   import org.springframework.beans.factory.annotation.Autowired;   import org.springframework.data.domain.Page;   import org.springframework.data.domain.PageRequest;   import org.springframework.data.domain.Sort;   import org.springframework.data.domain.Sort.Direction;   import org.springframework.web.bind.annotation.RequestMapping;   import org.springframework.web.bind.annotation.RestController;      import com.example.domain.Person;   import com.example.repository.PersonRepository;      @RestController   public class DataController {              protected static Logger logger=LoggerFactory.getLogger(DataController.class);          @Autowired       PersonRepository personRepository;              @RequestMapping("/save")       public Person save(String name,String address,Integer age){           logger.debug("save 开始");           Person p=personRepository.save(new Person(null,name,age,address));           logger.debug("save 结束");           return p;       }              @RequestMapping("/q1")       public List<Person> q1(String address){           logger.debug("q1 开始");           logger.debug("q1 接收参数address={}",address);           List<Person> people=personRepository.findByAddress(address);           return people;       }              @RequestMapping("/q2")       public List<Person> q2(String name,String address){           logger.debug("q2 开始");           logger.debug("q2接收参数name={},address={}",name,address);           return personRepository.findByNameAndAddress(name, address);       }              @RequestMapping("/q3")       public List<Person> q3(String name,String address){           logger.debug("q3 开始");           logger.debug("q3接收参数name={},address={}",name,address);           return personRepository.withNameAndAddressQuery(name, address);       }              @RequestMapping("/sort")       public List<Person> sort(){           logger.debug("sort 开始");           List<Person> people=personRepository.findAll(new Sort(Direction.ASC,"age"));           return people;       }              @RequestMapping("/page")       public Page<Person> page(){           logger.debug("page 开始");           Page<Person> people=personRepository.findAll(new PageRequest(1,2));           return people;       }   }   6、配置数据库连接,在application.properties(src/main/resources下)

spring.datasource.url=jdbc:mysql://192.168.56.201:3306/bootsample?useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jackson.serialization.indent_output=true

7、运行测试

A、先保存数据

http://localhost:8080/save?name=aa&&address=北京&&age=1 http://localhost:8080/save?name=ab&&address=北京&&age=2 http://localhost:8080/save?name=cq1&&address=重庆&&age=50 http://localhost:8080/save?name=cq2&&address=重庆&&age=51

B、查询q1

http://localhost:8080/q1?address=北京

C、查询q2

http://localhost:8080/q2?address=北京&&name=aa

D、查询q3

http://localhost:8080/q3?address=北京&&name=aa

E、排序

http://localhost:8080/sort

F、分页

http://localhost:8080/page

运用hibernate访问mysql,基本也是老技术,只是用JPA简化了dao层代码,对于业务对象基本没有变化

只看这篇肯定会遇到一些错误,可以参考我的上一篇,可以解决那些没有注入的或者没有扫描的问题,都是一些注解的配置等等.

转载请注明原文地址: https://www.6miu.com/read-25482.html

最新回复(0)