Spring_data_JPA教程(Gradle构建)
作者:互联网
1,使用spring initializr 创建Gradle项目,其中语言选择Java,构建工具选择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的复杂操作和连表查询!
标签:name,JPA,Spring,Gradle,JpaRepository,主键,where,id 来源: https://blog.csdn.net/weixin_38670210/article/details/122603366