jpa(java persistence api)意即java持久化api,是sun官方在jdk5.0后提出的java持久化规范。主要是为了简化持久层开发以及整合orm技术,结束hibernate、toplink、jdo等orm框架各自为营的局面。jpa是在吸收现有orm框架的基础上发展而来,易于使用,伸缩性强。
<!-- jpa框架 --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-jpa</artifactid> </dependency>
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时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
就是根据这个对象生成的表结构。
@table(name = "t_user") @entity public class user { @id @generatedvalue private integer id; @column private string name; @column private integer age; // 省略 get set }
定义对象的操作的接口,继承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); }
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
如对本文有疑问, 点击进行留言回复!!
android sdk源码 andoid-21 下的TextUtils.java文本工具类 源码赏析
地理坐标(WGS84),投影坐标下(Mercator)切片系统的计算Java类
荐 JavaWeb~简单认识以太网、MAC地址、MTU机制、ARP协议、DNS协议
HUAWEI MH5000-31 LGA Module Hardware Guide draft
网友评论