SpringdataJPA Demo

基本概念

ORM:object-relational metadata,对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
JPA:Java Persistence API的简称,中文名为Java持久层API,用注解或XML描述对象和关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPQL:面向对象的查询语言-Java Persistence Query Language(JPQL)。通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
Spring Data: Spring 的一个子项目。用于简化数据库访问,支持NoSQL和关系数据库存储。其主要目标是使数据库的访问变得方便快捷。
Spring data JPA:Spring Data JPA是Spring Data家族的一部分,可以轻松实现基于JPA的存储库。 此模块处理对基于JPA的数据访问层的增强支持。 它使构建使用数据访问技术的Spring驱动应用程序变得更加容易。
Spring data JPA主要类结构图:
主要类结构图

Spring-Data-JPA依赖配置

        <!-- JPA依赖    -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--  WEB依赖   -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--  Mysql依赖  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

配置文件

#mysql数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#jpa基本配置
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true

spring.jpa.hibernate.ddl-auto有以下几种配置:
• validate:在加载hibernate时,验证创建数据库表结构。
• create:每次加载hibernate,重新创建数据库表结构,设置时要注意,如果设置错误的话,就会造成数据的丢失。
• create-drop:在加载的时候创建表,在关闭项目时删除表结构。
• update:加载时更新表结构。
• none:加载时不做任何操作。
spring.jpa.show-sql设置为true时,可以在控制台打印SQL

创建实体对象

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column(nullable = false,unique = true)
    private String username;
    @Column
    private String password;

@Entity表明这是一个实体类
@Id表明这是数据库中的主键ID
@GeneratedValue(strategy = GenerationType.AUTO)表明此字段自增长
@Collumn可以设置字段的属性如nullable为非空,unique唯一约束

创建数据操作层

public interface UserRepository extends CrudRepository<User, Long> {

}

创建控制层

@Controller
@RequestMapping("/demo")
public class UserController {
    @Autowired
    private UserRepository userRepository;
    @GetMapping("/add")
   public void addNewUser(String username,String password){
       User user = new User(username,password);
       userRepository.save(user);
   }

   @GetMapping("/all")
   @ResponseBody
   public Iterable<User> getAllUsers(){
        return userRepository.findAll();
   }
}

运行测试

报错:BeanCreationException
解决方法:
在主运行类上加@EnableJpaRepositories注解

@SpringBootApplication
@EnableJpaRepositories
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

测试成功:
运行结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Data JPA 是基于 Spring 框架的一种数据访问技术,它简化了 JPA 的编程模型,提供了一种更加方便、高效的数据库操作方式。使用 Spring Data JPA,我们可以通过定义接口的方式,轻松地实现对数据库的增、删、改、查等操作。 下面是一个简单的 Spring Data JPA 的示例代码: 首先,我们需要定义一个实体类,如下所示: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; // 省略 getter 和 setter 方法 } ``` 接着,我们需要定义一个 Repository 接口,如下所示: ``` public interface UserRepository extends JpaRepository<User, Long> { } ``` 这里的 JpaRepository 是 Spring Data JPA 提供的一个接口,它包含了一些常用的数据库操作方法,例如:save、delete、findAll 等。我们只需要定义一个继承了 JpaRepository 的接口,并指定实体类和主键类型,就可以使用这些方法了。 最后,我们可以在代码中使用 UserRepository,例如: ``` @Service public class UserService { @Autowired private UserRepository userRepository; public void saveUser(User user) { userRepository.save(user); } public List<User> findAllUsers() { return userRepository.findAll(); } } ``` 在这个示例代码中,我们使用了 UserRepository 中的 save 和 findAll 方法,分别实现了保存用户和查询所有用户的功能。 希望这个示例代码能够帮助你理解 Spring Data JPA 的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值