当前位置: 移动技术网 > IT编程>开发语言>Java > SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作

SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作

2019年06月17日  | 移动技术网IT编程  | 我要评论

一、jap框架简介

jpa(java persistence api)意即java持久化api,是sun官方在jdk5.0后提出的java持久化规范。主要是为了简化持久层开发以及整合orm技术,结束hibernate、toplink、jdo等orm框架各自为营的局面。jpa是在吸收现有orm框架的基础上发展而来,易于使用,伸缩性强。

二、与springboot2.0整合

1、核心依赖

<!-- jpa框架 -->
<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-data-jpa</artifactid>
</dependency>

2、配置文件

spring:
  application:
    name: node09-boot-jpa
  datasource:
    url: jdbc:mysql://localhost:3306/data_jpa?useunicode=true&characterencoding=utf-8&allowmultiqueries=true
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

ddl-auto几种配置说明
1)create
每次加载hibernate时都删除上一次的生成的表,然后根据bean类重新来生成新表,容易导致数据丢失,(建议首次创建时使用)。
2)create-drop
每次加载hibernate时根据bean类生成表,但是sessionfactory一关闭,表就自动删除。
3)update
第一次加载hibernate时根据bean类会自动建立起表的结构,以后加载hibernate时根据bean类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。
4)validate
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

3、实体类对象

就是根据这个对象生成的表结构。

@table(name = "t_user")
@entity
public class user {
    @id
    @generatedvalue
    private integer id;
    @column
    private string name;
    @column
    private integer age;
    // 省略 get set
}

4、jpa框架的用法

定义对象的操作的接口,继承jparepository核心接口。

import com.boot.jpa.entity.user;
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;
@repository
public interface userrepository extends jparepository<user,integer> {

    // 但条件查询
    user findbyage(integer age);
    // 多条件查询
    user findbynameandage(string name, integer age);
    // 自定义查询
    @query("from user u where u.name=:name")
    user findsql(@param("name") string name);
}

5、封装一个服务层逻辑

import com.boot.jpa.entity.user;
import com.boot.jpa.repository.userrepository;
import org.springframework.stereotype.service;
import javax.annotation.resource;
@service
public class userservice {
    @resource
    private userrepository userrepository ;
    // 保存
    public void adduser (user user){
        userrepository.save(user) ;
    }
    // 根据年龄查询
    public user findbyage (integer age){
        return userrepository.findbyage(age) ;
    }
    // 多条件查询
    public user findbynameandage (string name, integer age){
        return userrepository.findbynameandage(name,age) ;
    }
    // 自定义sql查询
    public user findsql (string name){
        return userrepository.findsql(name) ;
    }
    // 根据id修改
    public void update (user user){
        userrepository.save(user) ;
    }
    //根据id删除一条数据
    public void deletestudentbyid(integer id){
        userrepository.deletebyid(id);
    }
}

三、测试代码块

import com.boot.jpa.jpaapplication;
import com.boot.jpa.entity.user;
import com.boot.jpa.service.userservice;
import org.junit.test;
import org.junit.runner.runwith;
import org.springframework.boot.test.context.springboottest;
import org.springframework.test.context.junit4.springjunit4classrunner;
import javax.annotation.resource;
@runwith(springjunit4classrunner.class)
@springboottest(classes = jpaapplication.class)
public class userjpatest {
    @resource
    private userservice userservice ;
    @test
    public void adduser (){
        user user = new user() ;
        user.setname("知了一笑");
        user.setage(22);
        userservice.adduser(user);
        user user1 = new user() ;
        user1.setname("cicada");
        user1.setage(23);
        userservice.adduser(user1);
    }
    @test
    public void findbyage (){
        integer age = 22 ;
        // user{id=3, name='知了一笑', age=22}
        system.out.println(userservice.findbyage(age));
    }
    @test
    public void findbynameandage (){
        system.out.println(userservice.findbynameandage("cicada",23));
    }
    @test
    public void findsql (){
        // user{id=4, name='cicada', age=23}
        system.out.println(userservice.findsql("cicada"));
    }
    @test
    public void update (){
        user user = new user() ;
        // 如果这个主键不存在,会以主键自增的方式新增入库
        user.setid(3);
        user.setname("哈哈一笑");
        user.setage(25);
        userservice.update(user) ;
    }
    @test
    public void deletestudentbyid (){
        userservice.deletestudentbyid(5) ;
    }
}

四、源代码地址

github地址:知了一笑
https://github.com/cicadasmile/spring-boot-base
码云地址:知了一笑
https://gitee.com/cicadasmile/spring-boot-base


如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网