美文网首页
SpringBoot JPA使用方式-菜鸟专用

SpringBoot JPA使用方式-菜鸟专用

作者: 原始人y | 来源:发表于2020-08-13 11:34 被阅读0次

    新建springboot 项目,在pom中增加依赖。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.6</version>
    </dependency>
    

    配置JPA

    #通用数据源配置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://10.110.2.56:3306/springboot_jpa?charset=utf8mb4&useSSL=false
    spring.datasource.username=springboot
    spring.datasource.password=springboot
    # Hikari 数据源专用配置
    spring.datasource.hikari.maximum-pool-size=20
    spring.datasource.hikari.minimum-idle=5
    # JPA 相关配置
    spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
    spring.jpa.show-sql=true
    spring.jpa.hibernate.ddl-auto=create
    

    配置说明
    spring.jpa.show-sql=true 配置在日志中打印出执行的 SQL 语句信息。
    spring.jpa.hibernate.ddl-auto=create 配置指明在程序启动的时候要删除并且创建实体类对应的表。这个参数很危险,因为他会把对应的表删除掉然后重建。所以千万不要在生成环境中使用。只有在测试环境中,一开始初始化数据库结构的时候才能使用一次。
    spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 。在 SrpingBoot 2.0 版本中,Hibernate 创建数据表的时候,默认的数据库存储引擎选择的是 MyISAM (之前好像是 InnoDB,这点比较诡异)。这个参数是在建表的时候,将默认的存储引擎切换为 InnoDB 用的。
    ddl-auto:create----每次运行该程序,没有表格会新建表格,表内有数据会清空

    ddl-auto:create-drop----每次程序结束的时候会清空表

    ddl-auto:update----每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新

    ddl-auto:validate----运行程序会校验数据与数据库的字段类型是否相同,不同会报错
    建立第一个数据实体类

    数据库实体类是一个 POJO Bean 对象。这里我们先建立一个 UserDO 的数据库实体。数据库实体的源码如下

    package com.yanggaochao.springboot.learn.springbootjpalearn.security.domain.dao;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    /**
     * 用户实体类
     *
     * @author 杨高超
     * @since 2018-03-12
     */
    @Entity
    @Table(name = "AUTH_USER")
    public class UserDO {
        @Id
        private Long id;
        @Column(length = 32)
        private String name;
        @Column(length = 32)
        private String account;
        @Column(length = 64)
        private String pwd;
    
        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 String getAccount() {
            return account;
        }
    
        public void setAccount(String account) {
            this.account = account;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }
    

    其中:

    @Entity 是一个必选的注解,声明这个类对应了一个数据库表。
    @Table(name = "AUTH_USER") 是一个可选的注解。声明了数据库实体对应的表信息。包括表名称、索引信息等。这里声明这个实体类对应的表名是 AUTH_USER。如果没有指定,则表名和实体的名称保持一致。
    @Id 注解声明了实体唯一标识对应的属性。
    @Column(length = 32) 用来声明实体属性的表字段的定义。默认的实体每个属性都对应了表的一个字段。字段的名称默认和属性名称保持一致(并不一定相等)。字段的类型根据实体属性类型自动推断。这里主要是声明了字符字段的长度。如果不这么声明,则系统会采用 255 作为该字段的长度

    实现一个持久层服务

    在 Spring Data JPA 的世界里,实现一个持久层的服务是一个非常简单的事情。以上面的 UserDO 实体对象为例,我们要实现一个增加、删除、修改、查询功能的持久层服务,那么我只需要声明一个接口,这个接口继承
    org.springframework.data.repository.Repository<T, ID> 接口或者他的子接口就行。这里为了功能的完备,我们继承了 org.springframework.data.jpa.repository.JpaRepository<T, ID> 接口。其中 T 是数据库实体类,ID 是数据库实体类的主键。

    package com.yudeshuai.manhua.repository;
    
    import com.yudeshuai.manhua.dto.UserDO;
    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface UserDao extends JpaRepository<UserDO,Long> {
    
        UserDO findByAccount(String account);
    }
    

    用法

    @Autowired
        private UserDao userDao;
    
    UserDO dd= userDao.findByAccount("123");

    相关文章

      网友评论

          本文标题:SpringBoot JPA使用方式-菜鸟专用

          本文链接:https://www.haomeiwen.com/subject/vspyrktx.html