欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot学习-2:JPA的应用

程序员文章站 2022-03-02 15:20:31
...

在springboot的开发中,就以简洁快速著称。在数据库操作方面如果使用JPA的话,可以说是一简到底了。
jpa是java persistence api(java 持久层规范)的简写,jpa只是一套规范,而像hibernate等才是具体实现jpa的产品。
话不多说,开始
首先,在创建好的springboot项目pom添加jpa依赖:

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

在application.yml里配置好数据库相关信息datasource:

  datasource:
      url: jdbc:mysql://localhost:3306/login?serverTimezone=UTC
      driver-class-name: com.mysql.cj.jdbc.Driver
      hikari:
        username: root
        password: 123456

在application.yml里配置好jpa:

  jpa:
      hibernate:
    #     更新或者创建数据表结构
        ddl-auto: update
    #    控制台显示SQL
      show-sql: true
      database: mysql

实体类:

@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "data") //@Table来指定和哪个数据表对应;如果省略默认表名就是data
public class Data {

    @Id //这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
    private Integer id;
    @Column
    private String sd;
    @Column //省略默认列名就是属性名
    private String wd;
    public Data(String wd,String sd ) {

            this.wd=wd;
            this.sd=sd;
    }
    public Data(){}
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getSd() {
        return sd;
    }

    public void setSd(String sd) {
        this.sd = sd;
    }

    public String getWd() {
        return wd;
    }

    public void setWd(String wd) {
        this.wd = wd;
    }
}

jpa有许多相关的注解,如@Entity表示这个类为实体类;@Table指定数据表表名,如果省略的话默认表名就是当前类名;@Id表示此字段是主键,可设为自增长;@Column用来表明数据表中的列名
编写接口(持久层)

@Repository
public interface DataDao extends JpaRepository<Data,Integer> {

}

到这里其实就可以直接使用了,但是规范点还是得写服务层:
服务层

@Service
public class DataServiceImpl {
    @Autowired
    DataDao dataDao;

    private Logger logger = Logger.getLogger(DataServiceImpl.class);
    public void insertData(Data data) {
        dataDao.saveAndFlush(data);//不会保存到缓存中,立即刷新到DB
    }
    public List<Data> readData(){
        List<Data> tem=dataDao.findAll();
        logger.info("进入函数读取数据");
        return tem;
    }
}

服务层里写项目中需要用到的方法,我这里是温湿度数据,分为插入数据和查看数据,较为简单。
控制层:
最后是控制层的实现:

    @Autowired
    DataServiceImpl dataService;

先将服务注入到spring容器中,然后是具体的运用就可以了:

    @PostMapping("/ShowInfoIndexServlet")//html页面的ajax数据的查询,返回json数据
    @ResponseBody()
    public String ShowInfoIndexServlet() throws JsonProcessingException{
        dataList=dataService.readData();
        logger.info("读取温湿度数据");
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(dataList);
        return json;
    }

这里将数据读取出来,然后返回json数据给前端,前端解析在图表里

进入到图表界面之后就会读取数据了,显示sql语句:
SpringBoot学习-2:JPA的应用
END