spring-data-jpa 使用

1 篇文章 0 订阅

刚开始学习spring框架的时候,使用的是spring data jpa,这是第一个接触的orm框架,一开始使用的时候可以用orm框架为之兴奋不已,觉得这个框架厉害的不行,太强了。后来发现国内流行的是mybatis,jpa速度在mybatis、beetlsql、hibernate里是最慢的一个。。。

beetlsql官网对比
http://ibeetl.com/guide/#beetlsql
在这里插入图片描述
不过也不影响开始项目的使用。

jpa

jpa orm框架使用的是hibernate框架
在国外很流行的一个持久层框架
国内流行的是mybatis
我在其他项目使用的是国人写的另一个框架 beetlsql

依赖

jpa依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

其他的依赖:mysql-jdbc、spring-boot

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.11</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.2</version>
		</dependency>

	</dependencies>

创建实体

创建一个user实体

package com.wys.read.domain;

import com.fasterxml.jackson.annotation.JsonIgnore;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * @author: wys
 * @created in 9:47 2018/10/6
 * user实体
 */
 
// 实体注解
@Entity
public class User {

	 /**
     * 实体id,自增主键
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 用户名字
     */
    @NotNull	// 不空注解
    @Size(min = 1, max = 50)	// 长度
    @Column(length = 50, unique = true, nullable = false)	// 唯一约束
    private String username;

    /**
     * 密码
     */
    @JsonIgnore
    @NotNull	// 不空注解
    @Size(min = 60, max = 60)	// 长度
    @Column(name = "password", length = 60, nullable = false)	// 唯一约束
    private String password;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

自动映射数据库
当实体创建好后,jpa在数据库中是自动帮你创建表的,所以不用在数据库中再次创建对应的表。
不过要注意的是,如果项目跑起来,数据库中没有对应的表,可能就是你的实体没有写对,没写好,可以回去检查下

创建user的repository

package com.wys.read.repository;

import com.wys.read.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

/**
 * @author: wys
 * @date: Created in 9:51 2018/10/6
 */
 // repository注解
@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}

1.Repository注解
说明这个类是实体的Repository
2.命名方式是实体+Repository
3.继承JpaRepository
继承的泛型两个参数
第一个:实体
第二个:实体的主键数据类型

使用user实体的orm

1.service注入Repository Bean

    @Autowired
    private UserRepository userRepository;

增加通过名字查找用户方法

    User findUserByUsername(String username);

方法名创建根据框架的方法命名规则来写
这个作者有命名规则
https://blog.csdn.net/sbin456/article/details/53304148/

自定义方法

比如分页获取user

    @Query(nativeQuery = true, value = "select * from user limit ?1,?2")
    List<User> findUserByPage(int page, int size);

写好方法名

@Query
自定义方法

nativeQuery = true
原生sql语句编写

value = ""
原生sql语句

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值