spring boot jpa(踩坑)

 1数据库带两个参数,一个时区,一个utf-8

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&characterEncoding=UTF-8
    username: xxx
    password: xxxxxxxxx

2控制台显示sql语句

spring:
  jpa:
    hibernate:
      ddl-auto: update #自动更新表结构
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect  #不加这句则默认为myisam引擎
    show-sql: true  #显示sql语句
    properties:
      hibernate.format_sql: true  #格式化sql语句

3排序,分页

Sort sort = new Sort(Sort.Direction.DESC,"id");  //正序列ASC
PageRequest pageRequest=PageRequest.of(1,5,sort);
Page<User> li=userService.findAll(pageRequest);
for (User user:li){
    System.err.println(user);
}

4主键回调

@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;

PS:@GeneratedValue注解的strategy属性提供四种值:

-AUTO主键由程序控制, 是默认选项 ,不设置就是这个
-IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
-SEQUENCE 通过数据库的序列产生主键, MYSQL  不支持
-Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

5测试时要添加

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional  //不加会报no session
@Rollback(false)  //默认自动回滚事务,取消
public class Demo3ApplicationTests {

6@Query

@Query(value = " select * from tt where id>=:s and id<=:t ",nativeQuery = true)
List<User> aaa(Long s,Long t);
@Query(value = " select * from tt where name like %:name% ",nativeQuery = true)
List<User> bbb(String name);

7jpa语言规则看https://blog.csdn.net/wujiaqi0921/article/details/78789087

猜你喜欢

转载自blog.csdn.net/weixin_43245707/article/details/84874985