SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作
程序员文章站
2022-07-11 17:16:50
一、JAP框架简介 JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范。主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基 ......
一、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
上一篇: PyTorch线性回归和逻辑回归实战示例
下一篇: 详解Python中的四种队列