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的复杂操作和连表查询!