Springboot + SpringData JPA Demo

一直以来,使用Mybatis居多。自定义书写sql,使用注解的方式简直爽到爆炸,如果有较难的sql还可以使用Provider方式,把sql写到某个方法中,返回需要运行的sql就好了。

但是写多了之后,看着要写的单表查询,删除,修改的sql,需要写大量类似而枯燥的语句,非常头疼。

如果这种情况下推荐使用SpringDataJpa,默认使用Hibernate,可以自动生成sql语句,自动执行。更何况现在整合queryDSL后,比较之下Mybatis灵活的书写sql优势并没有那么明显。


1:导入需要使用的Jar包

因为这里这是一个Demo,不把数据展示在Web层来看了,只使用单元测试来测试是否能够正常运行并返回数据即可。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

2:配置文件

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot-jpa?serverTimezone=UTC
spring.datasource.username=用户名
spring.datasource.password=密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

3:实体类

import lombok.Data;
import javax.persistence.*;

@Data
@Entity
@Table(name="user")
public class User {
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;
    private String name;
    private String age;
    private String sex;
}

4:UserRepository

一般我们继承JpaRepository就会有增删改查方法,还可以通过以下方法来书写自定义sql

import com.xiaofsu.springboot_jpa.Model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

public interface UserRepository extends JpaRepository<User,String> {
    
    @Query(value = "select count(*) from user", nativeQuery = true)
    int countUser();

}

5:业务层

注入刚刚的UserRepository,就可以进行增删改查操作。

SpringDataJpa业务层.png

6:单元测试

单元测试.png

7:总结

相对于用户量较小,业务不复杂的情况下,使用SpringDataJpa开发,效率会更高一些。

项目地址

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.xiaofsu.com/archives/springbootspringdatajpademo