1.将从分页对象中提取分页信息放入一个Map
public static <T> Map<String, Object> pageInfo(Page<T> page) {
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("first", page.isFirst());
pageMap.put("last", page.isLast());
pageMap.put("totalPages", page.getTotalPages());
pageMap.put("totalElements", page.getTotalElements());
pageMap.put("size", page.getSize());
pageMap.put("page", page.getNumber() + 1);
pageMap.put("numberOfElements", page.getNumberOfElements());
return pageMap;
}
2.数据库实体类定义索引
@Entity
@Table(name = "game_date_data",
indexes = {@Index(name = "idx_game_plat_channel_date",
columnList = "game, plat, channel,date",
unique = true)})
@Entity
@Table(name = "user",
indexes = {@Index(name = "unique_username", columnList = "username", unique = true),
@Index(name = "unique_no", columnList = "no", unique = true)})
3.字段定义注释
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false, columnDefinition = "varchar(255) comment '用户名'")
private String username;
@Column(unique = true, columnDefinition = "varchar(255) default '' comment '邮箱'")
private String email;
@Column(columnDefinition = "text DEFAULT null COMMENT '自我介绍'")
private String introduce;
4.Spring Boot中Spring Data Jpa最基本配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
5.@Transactional事务使用
- 异常在A方法内抛出,则A方法就得加注解
- 多个方法嵌套调用,如果都有 @Transactional 注解,则产生事务传递,默认 Propagation.REQUIRED
- 如果注解上只写 @Transactional 默认只对 RuntimeException 回滚,而非 Exception 进行回滚。如果要对 checked Exceptions 进行回滚,则需要 @Transactional(rollbackFor = Exception.class)