资讯专栏INFORMATION COLUMN

Spring Boot 教程(二):使用Spring Boot JPA完成数据层访问

DevWiki / 2849人阅读

摘要:教程简介本项目内容为教程样例。目的是通过学习本系列教程,读者可以从到掌握的知识,并且可以运用到项目中。本章将进一步讲解,结合完成数据层访问。创建控制器在下面创建控制器用于测试访问程序运行和调试在类中,启动程序。

教程简介

本项目内容为Spring Boot教程样例。目的是通过学习本系列教程,读者可以从0到1掌握spring boot的知识,并且可以运用到项目中。如您觉得该项目对您有用,欢迎点击收藏和点赞按钮,给予支持!!教程连载中,欢迎持续关注!

环境

IDE: Eclipse Neon
Java: 1.8
Spring Boot: 1.5.12
数据库:MYSQL

本章简介

通过Spring Boot 教程(一):项目构建,完成Restful API的学习,相信大家已经可以快速搭建一个spring boot的脚手架。
本章将进一步讲解spring boot,结合SpringDataJPA完成数据层访问。
SpringDataJPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大的减少了JPA作为数据访问方案的代码量,你仅仅需要编写一个接口集成下SpringDataJPA内部定义的接口即可完成简单的CRUD操作。

配置

在pom.xml文件中添加如下:

        
            org.springframework.boot
            spring-boot-starter-data-jpa
        

        
            mysql
            mysql-connector-java
            runtime
        

在applicaiton.properties文件中配置数据库连接信息:

spring.datasource.url = jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect

spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置属性:
create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

创建实体和数据访问接口

创建包com.example.demo.model,创建实体User

@Entity
@Table(name = "T_USER")
public class User implements Serializable {

    private static final long serialVersionUID = 2711201708013908747L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)  
    @Column(name = "id")
    private Long id;
    
    @Column(name = "name", length = 255)
    private String name;
    
    @Column(name = "pass", length = 255)
    private String pass;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this.pass = pass;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    
    
}

创建包com.example.demo.domain,创建UserRepository接口实现对该实体的数据访问

public interface UserRepository extends JpaRepository {
    
    User findByName(String name);
    
    User findByNameAndPass(String name, String pass);
    
    @Query("from User u where u.name=:name")
    User findUser(@Param("name") String name);

}

UserRepository接口继承了JpaRepository,也就是说UserRepository拥有了JpaRepository接口及父类接口的所有方法实现,所以我们并不需要添加任何数据操作代码就可以完成数据操作,JpaRepository接口对条件查询以及保存集合数据添加了对应的方法。

创建控制器

在com.example.demo.api下面创建User控制器UserController, 用于测试web访问

@RestController
public class UserController {
    
    @Autowired
    private UserRepository userDao;
    
    @RequestMapping("/saveUser")
    public void save(){
        User user = new User();
        user.setName("ajay");
        user.setPass("123456");
        userDao.save(user);
    }
    
    @RequestMapping("/delete")
    public void delete(String name){
        User user = userDao.findByName(name);
        userDao.delete(user);
    }
    
    @RequestMapping("/updateUser")
    public void update(String name){
        User user = userDao.findByName(name);
        user.setPass("123456789");
        userDao.save(user);
    }
    
    @RequestMapping("/findByName")
    public User findByName(String name){
        return userDao.findByName(name);
    }

}
程序运行和调试

在Application类中,启动程序。浏览器输入http://localhost:8080/saveUser
http://localhost:8080/findByName?name=ajay

代码:gitee.com/shaojiepeng/SpringBootCourse

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69215.html

相关文章

  • 一起来学SpringBoot | 第六篇:整合SpringDataJpa

    摘要:忽略该字段的映射省略创建数据访问层接口,需要继承,第一个泛型参数是实体对象的名称,第二个是主键类型。 SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程 上一篇介绍了Spring JdbcTempl...

    Dionysus_go 评论0 收藏0
  • SpringBoot 实战 (八) | 使用 Spring Data JPA 访问 Mysql 数据

    摘要:是一个基于映射的标准协议目前最新版本是。的主要实现由和等完成,我们只要使用来开发,无论是哪一个开发方式都是一样的。是的一个子项目,它通过基于的极大地减少了作为数据访问方案的代码量。源码下载后语以上为使用访问数据库的教程。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 如题,今天介绍 Spring Data JPA 的使用。 什么是 Spring D...

    hedzr 评论0 收藏0
  • Spring 指南(目录)

    摘要:指南无论你正在构建什么,这些指南都旨在让你尽快提高工作效率使用团队推荐的最新项目版本和技术。使用进行消息传递了解如何将用作消息代理。安全架构的主题指南,这些位如何组合以及它们如何与交互。使用的主题指南以及如何为应用程序创建容器镜像。 Spring 指南 无论你正在构建什么,这些指南都旨在让你尽快提高工作效率 — 使用Spring团队推荐的最新Spring项目版本和技术。 入门指南 这些...

    only_do 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<