一直以来,使用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
,就可以进行增删改查操作。
6:单元测试
7:总结
相对于用户量较小,业务不复杂的情况下,使用SpringDataJpa
开发,效率会更高一些。
Q.E.D.