Spring Data JPA 初次尝试

发布于 2020-05-22  174 次阅读


用多了mybatis总觉得仅仅是搞CRUD的话mybatis的配置未免太麻烦,于是乎今天我尝试了一下Spring DATA JPA,适用于简单的增删改查,简单又实用,仅仅是记录,大佬勿喷

配置文件

老规矩,先上application.yml

server:
  port: 9001
spring:
  application:
    name: ihrm-company #指定服务名字
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://10.255.137.137:3306/ihrm?useUnicode=true&characterEncoding=utf8
    username: root
    password: "000000"
  jpa:
    database: mysql #指定数据库
    show-sql: true #在控制台输出sql语句
    open-in-view: true # 暂且不明?

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity //表示这是一个实体类
@Table(name = "test") //使用name属性把类和数据表一一对应
public class Test {
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
   //主键自增策略,前提是表在设计的时候该字段就已经设置为自增了
    @Id //@Id表明了主键
    private  Integer id;
    private  String name;
}

Dao层

JPA的DAO层就省事了很多,不用写各种各样的mapper.xml,写各种方法实现增删改查,在JPA中,只要声明一个接口,一切都能搞定

自定义接口继承了两个泛型接口,第一个接口JpaRepository<T,ID>的两个参数分别表示实体类和主键的类型,JpaSpecificationExecutor<T>的参数则是DAO层的类名,也就是当前类名

当然,这只是基础用法。

public interface TestDAO extends JpaRepository<Test,Integer> , JpaSpecificationExecutor<TestDAO> { }

测试类

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class TestDAOTest {
    @Autowired
    TestDAO testDAO; //自动注入
    @org.junit.Test
    public void Add() { //增
        for (int i = 0; i < 10; i++) {
            Test test = new Test();
            test.setName("wang");
            Test save = testDAO.save(test);
        } //插入十条数据,name值都为wang,但主键是自增的
    }
    @org.junit.Test
    public void findAll() {
        List<Test> all = testDAO.findAll();
        System.out.println(all.toString()); //打印查到的东西
    }
}

结果

查和增


忍耐无法忍耐的事物,才是真正的忍耐。