Spring_data_JPA教程(Gradle构建)

1,使用spring initializr 创建Gradle项目,其中语言选择Java,构建工具选择Gradle

Spring_data_JPA教程(Gradle构建)

2,创建出项目之后创建实体类User;

 

@Entity  //JPA中此注解表示是一个实体
@Table(name = "user")  // 指定表明,
@Data  //lombook注解,选择使用
@ToString  //同上
public class User {
    @Id   //表中主键
    @GeneratedValue(strategy = GenerationType.AUTO)   //主键生成策略
    private  Integer  id;
    @Column  //普通的列,其中也可设置其他属性
    private  String  name ;


    @Column
    private  Integer  age;
}

 


3,创建此实体类对应的Dao层

//当此类实现JpaRepository接口之后,不加此注解也可以将此类对象加入Spring容器中
@Repository  
//JpaRepository中的泛型,第一个是此dao对应的实体类型,第二个是实体的主键类型
public interface UserDao extends JpaRepository<User,Integer> {



}

4,如果使用简单得查询,可以使用JPA自带的一些对单表增删改查方法进行查询!如以下方法都是JPA已经提供方法,可以直接使用!

userDao.delete();
userDao.save();
userDao.deleteById();

5,如果简单的增删改查已经不能满足你的需求,比如你想通过name和Age做查询,此时你可以按照如下方法编写代码!

//当此类实现JpaRepository接口之后不加此注解也可以将此类对象加入Spring容器中
@Repository  
//JpaRepository中的泛型,第一个是此dao对应的实体类型,第二个是实体的主键类型
public interface UserDao extends JpaRepository<User,Integer> {
	
    
    //你可以使用条件去构建一个方法名称,如下名字将会通过你传入的name和Age进行查询
    //但是你的方法名需要杨按照JPA的要求进行构建
    List<User>  findByNameAndAge(String  name,Integer  age);

	
}

第一次看到这玩意的时候,简直是不我了个大草了!挺BT!

下边是JPA中查询方法的命名规范!

关键字

方法命名

sql where字句

And

findByNameAndPwd

where name= ? and pwd =?

Or

findByNameOrSex

where name= ? or sex=?

Is,Equals

findById,findByIdEquals

where id= ?

Between

findByIdBetween

where id between ? and ?

LessThan

findByIdLessThan

where id < ?

LessThanEquals

findByIdLessThanEquals

where id <= ?

GreaterThan

findByIdGreaterThan

where id > ?

GreaterThanEquals

findByIdGreaterThanEquals

where id > = ?

After

findByIdAfter

where id > ?

Before

findByIdBefore

where id < ?

IsNull

findByNameIsNull

where name is null

isNotNull,NotNull

findByNameNotNull

where name is not null

Like

findByNameLike

where name like ?

NotLike

findByNameNotLike

where name not like ?

StartingWith

findByNameStartingWith

where name like '?%'

EndingWith

findByNameEndingWith

where name like '%?'

Containing

findByNameContaining

where name like '%?%'

OrderBy

findByIdOrderByXDesc

where id=? order by x desc

Not

findByNameNot

where name <> ?

In

findByIdIn(Collection<?> c)

where id in (?)

NotIn

findByIdNotIn(Collection<?> c)

where id not in (?)

True

findByAaaTue

where aaa = true

False

findByAaaFalse

where aaa = false

IgnoreCase

findByNameIgnoreCase

where UPPER(name)=UPPER(?)

6,如果需要更加复杂sql 或者是mybatis的习惯使用者,习惯手写sql的同志可以使用如下方法

//当此类实现JpaRepository接口之后不加此注解也可以将此类对象加入Spring容器中
@Repository  
//JpaRepository中的泛型,第一个是此dao对应的实体类型,第二个是实体的主键类型
public interface UserDao extends JpaRepository<User,Integer> {
	
    
    //加上@Query并且nativeQuery = true之后可以手写sql,
    @Query(value = "select * from user" ,nativeQuery = true)
    List<User>  method1();
	
    
    //如果有传入的参数可以使用'?'来获取参数的值或者method3这种形式
    @Query(value = "select * from user  where  id  >  ?1" ,nativeQuery = true)
    List<User>  method2(Integer id);
    
    
    //如果有传入的参数可以使用'?'来获取参数的值或者method3这种形式
    @Query(value = "select * from user  where  id  >  :id" ,nativeQuery = true)
    List<User>  method2(@Param("id")Integer id);
}	

以上就是SpringDataJPA的简单教程,如有问题欢迎指正!下一篇说一下 JPA的复杂操作和连表查询!

 

上一篇:Mybatis批量更新出现BadSqlGrammarException异常解决


下一篇:spring-boot使用tools-redis实现分布式缓存