SpringBoot学习(五)操作数据库JPA(上)

        JPA操作数据库比JdbcTemplate操作不能说简单,只能说是步骤少点。步骤少就代表着很多东西不是那么简单。

1、依赖项

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

mysql的连接驱动还是不变,数据由原来的jdbc改为了data-jpa

2、配置内容

spring.datasource.url=jdbc:mysql://serverIpAddress:yourPortNum/yourDatabase
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true

datasource部分没有变化,新加入了jpa的相关设置。

spring.jpa.properties.hibernate.hbm2ddl.auto=update 自动创建、更新和验证数据表结构
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect  据说是声明SQL语法规则的,具体也不太懂,抄着用吧。
spring.jpa.show-sql=true 控制台是否显示sql语句

3、体验一下神奇的感觉

        只要建人家的规矩建一个类,数据库里表就会神奇的被建好。

没有表。

按要求写一个类(实体类)

import javax.persistence.*;

@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(nullable = false,unique = true)
    private String name;
    @Column(columnDefinition = "enum('男','女')")
    private String sex;

}

 代码待会解释,运行一下程序,见识一下神奇。

出现了一个student表,设计完全一致,神奇。

 见识了这个神奇,说说这个代码吧。

@Entity注解用于标记一个实体类,说简单点就是建一个表。表里面的字段就是类里面的属性

@Table用于声明表名,表名和实体类名相同,则可以省略。

类名为test

import javax.persistence.*;

@Entity
@Table(name="testtest")
public class Test {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(nullable = false)
    private String content;
}

生成的表名为testtest

 @Id表示这个属性对应的是主键字段。

@GeneratedValue说明如何自增,strategy=GenerationType.IDENTITY代表数据库自增。

@Column标注为数据库中的一列,可以定义nullable=true/false ,length=11

@Transient标注未不生成数据表中的列。

以上为建表的内容。

表建了然后就是操作数了。操作数用JPA接口JpaRepository实现。

这个接口有一下这些方法

1List<T> findAll()查找说有实体
2List<T> findAll(Sort var1)排序、查找所有实体
3List<T> findAllById(Iterable<ID> var1)返回指定一组ID的实体
4saveAll(Iterable<S> var1)保存集合
5void flash()执行缓存与数据库同步
6saveAndFlush(S var1)强制执行持久化
7deleteInBatch(Iterable<T> var1)删除一个实体集合
8deleteAllInBatch()删除所有实体
9getOne(ID var1)返回ID对应的实体
10findAll(Example<S> var1)查询满足所有Example的所有对象
11findAll(Example<S> var1,Sort var2)同上并进行排序返回。

方法都安排的妥妥的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值