SpringData基础

添加Maven依赖

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

配置application.yml

spring:
  jpa:
    hibernate:
      #生成策略
      ddl-auto: update
    #sql语句打印
    show-sql: true
    # 数据源基本配置
  datasource:
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/crud?serverTimezone=Asia/Shanghai

生成实体类User类

package cn.kgc.pojo;/*
 *@Package
 * @author Muziluo
 *@create 2020-07-27 10:23
 *@Description:[用户类]
 *@company:wy
 */

import javax.persistence.*;

//标识这个类是实体类
@Entity
//创建数据库的表名
@Table(name = "tbl_user")
public class User {
	//@Id 标识为id
    @Id
    //@GeneratedValue(strategy = GenerationType.IDENTITY) 标识为自增
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    
    // @Column(name = "tbl_name",length = 30) 
    //Column标识为列  name 指定数据库中的列名 length 为字段的长度
    @Column(name = "tbl_name",length = 30)
    private String name;

    @Column(name = "tbl_password",length = 30)
    private String password;

    @Column
    private Integer sex;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", sex=" + sex +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

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

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }
}

自动生成数据库

直接运行启动类,会在数据库里面生成表

创建repository包,添加UserRepository,继承JpaRepository

package cn.kgc.repository;/*
 *@Package
 * @author Muziluo
 *@create 2020-07-27 10:26
 *@Description:[描述]
 *@company:wy
 */

import cn.kgc.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User,Integer> {

    //根据用户名和密码查找用户
    public User findByNameAndPassword(String name,String password);

    public User findBySexAndAndPassword(Integer sex,String password);
}

生成方法

//Spring Data 接口中的查询方法
//定义符合规范的方法命名

//按照 Spring Data 的规范,查询方法以 find | read | get开头, 涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写。

//在接口中只需要声明符合规范的方法,即拥有对应的功能,如下表所示为方法中支持的关键字(官网地址):

//And 
方法名: findByLastnameAndFirstname 
实现: … where x.lastname = ?1 and x.firstname = ?2

//Or 
方法名: findByLastnameOrFirstname 
实现: … where x.lastname = ?1 or x.firstname = ?2

//Is,Equals 
方法名: findByFirstnameIs,findByFirstnameEquals
实现: … where x.firstname = ?1

//Between 
方法名: findByStartDateBetween 
实现: … where x.startDate between ?1 and ?2

//LessThan 
方法名: findByAgeLessThan 
实现: … where x.age < ?1

//LessThanEqual 
方法名: findByAgeLessThanEqual 
实现: … where x.age ⇐ ?1

//GreaterThan 
方法名: findByAgeGreaterThan 
实现: … where x.age > ?1

//GreaterThanEqual 
方法名: findByAgeGreaterThanEqual
实现:  … where x.age >= ?1
 
//After 
方法名: findByStartDateAfter 
实现: … where x.startDate > ?1

//Before 
方法名: 方法名: findByStartDateBefore 
实现: … where x.startDate < ?1

//IsNull 
方法名: findByAgeIsNull 
实现: … where x.age is null

//IsNotNull,NotNull 
方法名: findByAge(Is)NotNull 
… where x.age not null

//Like 
方法名: findByFirstnameLike 
实现: … where x.firstname like ?1

//NotLike 
方法名: findByFirstnameNotLike 
实现: … where x.firstname not like ?1

//StartingWith 
方法名: findByFirstnameStartingWith 
实现: … where x.firstname like ?1 (parameter bound with appended %)

//EndingWith 
方法名: findByFirstnameEndingWith 
实现: … where x.firstname like ?1 (parameter bound with prepended %)

//Containing 
方法名: findByFirstnameContaining 
实现: … where x.firstname like ?1 (parameter bound wrapped in %)

//OrderBy 
方法名: findByAgeOrderByLastnameDesc 
实现: … where x.age = ?1 order by x.lastname desc

//Not 
方法名: findByLastnameNot 
实现: … where x.lastname <> ?1

//In 
方法名: findByAgeIn(Collection ages) 
实现: … where x.age in ?1

//NotIn 
方法名: findByAgeNotIn(Collection age) 
实现: … where x.age not in ?1

//TRUE 
方法名: findByActiveTrue() 
实现: … where x.active = true

//FALSE 
方法名: findByActiveFalse() 
实现: … where x.active = false

//IgnoreCase 
方法名: findByFirstnameIgnoreCase 
实现: … where UPPER(x.firstame) = UPPER(?1)

如使用And条件连接时,应这样写:

findByLastNameAndFirstName(String lastName,String firstName); 

//where lastName like ?% and id <?
List<User> getByLastNameStartingWithAndIdLessThan(String lastName,Integer id);

条件的属性名称与个数要与参数的位置与个数一一对应 。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值