赞
踩
1.在项目中导入JPA的包
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
2.编写实体类,并与表之间做映射,同时需要配置好映射关系
- @Entity //实体类
- public class User {
-
- @Id //主键
- @GeneratedValue(strategy = GenerationType.IDENTITY)//自增
- private Integer id;
-
- @Column(name = "user_name",length = 50) //对应数据库的列
- private String userName;
- @Column
- private String password;
3.编写一个接口继承JpaRepository
- public interface UserRepository extends JpaRepository<User,Integer> {
- //......
- }
-
4.配置JPAProperties
- spring:
- jpa:
- hibernate:
- ddl-auto: update #更新或者创建数据表结构
- show-sql: true #是否在控制台显示sql
1.@Entity
标注实体类,并将其映射到指定的数据库表。
2.@Table
当实体类与数据库的表名不同名时,使用此注解进行标注说明,与@Entity并列使用,可以用于单独的语句行,也可以与声明语句同行。
其中name属性用于指定数据库的表名,catalog属性用于指定数据库中的目录,schema用于指定数据库的模式,uniqueConstraints 通常会用来设置约束条件,一般不设置。
3.@Id
标注实体类的映射为数据库的主键列,也可以放到属性的getter方法之前。
4.@GeneratedValue
用于标注主键的自动生成策略,通过属性strategy进行指定,默认JPA会自动选择一个最适合 底层数据库的主键生成策略。
在GenerationType 中定义了如下策略:
- IDENTITY:使用数据库id自增的方式进行自增,Oracle不支持。
- AUTO:默认模式,JPA自动去选择合适的策略。
- SEQUENCE:通过序列产生主键,使用@SequenceGenerator注解去指定序列的名字,Mysql不支持。
- TABLE:通过表来产生主键,使用此策略方便数据库的移植。
5.@Basic
是实体类与数据库字段映射时最简单的类型,有两个属性,fetch和optional属性,其中fetch用来指定属性的加载机制, 包含两个值,EAGER表示主支抓取,LAZY 表示延迟加载,默认情况下为 EAGER;而optional则用来表示该属性是否允许为null,默认是true。
6.@Column
用于实体类的属性与数据库的列名不同时,可用于标注name、unique、nullable、length等属性。
7.@Transient
添加数据库表中不存在的字段时,需要使用到该注解。
8.@Temporal
该注解用于帮Java的Date(DATE, TIME, 和 TIMESTAMP)类型进行格式化,来调整精度。
主要有三个为current_date、current_time和current_timestamp吗,无需参数,返回服务器上当前的日期时间和时间戳。
1.不能使用 select *,若要查询所有需要取别名,如:
select u from User u //查询user表中的信息
2.如果是更新或删除的操作,在方法上面需要加@Modifying 注解,如:
@Modifying
@Transactional
@Query("update User set password=?1 where id = ?2")
void updatePassword( String password,Long id);
3.用@Param 注解代替参数占位符,使用 :firstname去替换方法里的参数,如:
@Query("select u from User u where u.firstname = :firstname or u.lastname = :lastname")
User findUserByLastnameOrFirstname(@Param("lastname") String lastname,
@Param("firstname") String firstname);
4.使用 nativeQuery=true,语句可以直接放到数据库中执行,如:
@Query(value="select u from User u ",nativeQuery = true) List<User> getUser();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。