栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

SpringBoot(三)SpringBoot中使用JPA

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot(三)SpringBoot中使用JPA

Java开发经常用到操作数据库,尤其在JavaWeb开发中,下面是Springboot操作数据库:
1.什么是JPA
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中,JPA是一个基于O/R映射的标准规范。
JPA的总体思想和现有Hibernate、Toplink、JDO等ORM框架大体一致。主要包括括以下3方面的技术:

1.ORM映射元数据  将实体对象持久化到数据库表中
2.API,用来操作实体对象,执行CRUD操作
3.查询语言,通过面向对象,而非面向数据库的查询语言查询数据

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率

2.下面创建项目并添加相关依赖:
在Spring Boot中使用JPA,我们在创建项目时需要选择JPA依赖,如下:

项目创建成功之后,用mysql操作数据库,需要添加MySql驱动,在pom.xml文件中添加如下依赖:


	mysql
	mysql-connector-java
	5.1.40

3.配置基本属性
下面需要在application.properties中配置数据源和jpa的基本的相关属性,如下:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/jpatest
spring.datasource.username=root
spring.datasource.password=root

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jackson.serialization.indent_output=true

在上面的参数设置说明下:
1.第一行表示驱动的名称,和数据库驱动有关,MySql数据库,驱动名为com.mysql.jdbc.Driver ,oracle数据库用:
2.第二行表示数据库连接地址
3.第三四行表示数据库连接的用户名和密码
4.第五行则配置了实体类维护数据库表结构的具体行为,update表示当实体类的属性发生变化时,表结构跟着更新,也可以取值create,create表示启动的时候删除上一次生成的表,并根据实体类重新生成表,这个时候之前表中的数据就会被清空;还可以取值create-drop,这个表示启动时根据实体类生成表,但是当sessionFactory关闭的时候表会被删除;validate表示启动时验证实体类和数据表是否一致;none则什么都不做
5.第六行表示hibernate在操作的时候在控制台打印真实的sql语句
6.第七行表示格式化输出的json字符串,方便查看

4.定义映射实体类
定义相应的实体类,在Project启动时,系统会根据实体类创建相应的数据表,实体类如下:

@Entity      //表示和数据库表映射的实体类
//withNameAndAddressNamedQuery  表示后面的处查询语句
@NamedQuery(name = "Person.withNameAndAddressNamedQuery",    //表示一个NamedQuery的查询,一个名词表示一个查询语句
 query = "select p from Person p where p.name=?1 and p.address=?2")
public class Persion {
    @Id   //表示该字段是一个id
    @GeneratedValue     //该注解表示该字段自增
    private  Long id;
    private  String name;
    private  Integer age;
    private  String address;

    public Persion(Long id, String name, Integer age, String address) {
 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;
    }
}

如上:在实体类上我们使用了@Entity注解,表示这是一个和数据库表映射的实体类,在属性id上添加了@Id注解,表示该字段是一个id,@GeneratedValue注解则表示该字段自增。@NamedQuery注解表示一个NamedQuery查询,这里一个名称代表一个查询语句,后面可以在控制器中直接调用@NamedQuery中的withNameAndAddressNamedQuery方法,该方法表示查询语句是select p from Person p where p.name=?1 and p.address=?

定义数据访问接口
接下来可以定义数据访问接口了,数据访问接口需要继承JpaRepository类,在数据访问接口中一共定义了四个方法,如下:

基本查询

@RestController
public class DataController {
@Autowired
PersonRepository personRepository;

@RequestMapping("/save")
public  Persion save(String name,String address ,Integer age){
    Persion persion =personRepository.save(new Persion(null,name,age,address));
    return  persion;
}
@RequestMapping("/zhang1")
public List zhang1(String address){
    List people =personRepository.findByAddress(address);
    return  people;
}
@RequestMapping("zhang2")
public Persion zhang2(String name,String address){
    Persion people1 =personRepository.findByNameAndAddress(name,address);
    return  people1;
}
//查询所有数据
@RequestMapping("all")
public  List all(){
    return  personRepository.findAll();
}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号