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);
条件的属性名称与个数要与参数的位置与个数一一对应 。