【java】学习之spring data JPA

    访问数据库的方式大概可以分为两个流派:一个是以sql为中心,在jdbc上做封装;另一个流派则是以java entity为中心,以实体与实体关系映射,实体与实体操作会映射到数据库操作,spring data JPA则属于此类。第二中流派的好处,我想是可以最大限度的减少用户自己编写sql语句,尽量减少因sql而造成的错误,可维护性和迁移性更高。 

    最近项目中需要用到jpa,就简单的学习了一下具体的操作,于是记录下来。

首先,使用jpa,要创建一个实体类,这个实体类是用来关联数据库的业务表;以user为例。

1、建立Entity

@Entity
@Table(name = "user")  //如果没有指定,默认为当前类名,如User,数据库中为user;如UserTable,对应 
                         数据库为user_table
public class User  {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id ;

	//部门
	@Column
	private String name ;
	//创建时间
	@Column(name="create_time")  // 同table规则
	private Date createTime ;
	
 
}

2、建立Repository

Repository是数据库noSql的核心

 CrudRepository,提供基本增删改查;

PagingAndSortingRepository,集成CrudRepository,新增分页查询;

JpaRepository,提供丰富的数据库访问接口;

以JpaRepository为例

public interface UserRepository extends JpaRepository<User, Integer>{
Optional<User> findByName (String name);//根据name查找,where name = name,返回映射User实体类
}

3、持久化Entity

以保存记录sava为例

public interface UserService {
	public User findUser(int id);
	public Integer addUser(User user);
	public List<User> getAllUser(int start,int end);
	public User getUser(String name);
	public User getUser(String name,Integer departmentId);
	public Page<User> queryUser(Integer departmentId,Pageable page);
	public Page<User> queryUser2(Integer departmentId,Pageable page);
	public List<User> getByExample(String name) ;
	public void updateUser();
}
//实现UserService,其中以addUser为例
	
	public Integer addUser(User user){
		userDao.save(user);
		user.setName("1"+user.getName());
		userDao.save(user);
		return user.getId();
	}

第一个save是保存操作,输出的sql语句应为(Hibernate:insert into user(create_time,name)values(?,?))

第二个save为更新操作,输出的sql语句应为(Hibernate:update user set create_time=?,name=?)

4、基于方法名称查询

在建立Repository中有一个接口写了一个方法,findByName,但后续并未实现此方法,特别说明的是,这里不需要我们实现这个方法,这也是noSql中最方便的地方,这里可根据方法名进行查询。比如:findByLastnameAndFirstname对应的jpql语句则为

...where x.lastname=?1 and x.firstname= ?2,接口封装的程序帮我们自动生成了SQL语句对数据库进行访问,再映射到创建的实体类中。

注,本文部分代码来自于《spring Boot 2 精髓》一书中的spring Data JPA一章中

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值