JPA 使用

前言
在还没有接触到Spring之前,我写数据库操作都是徒手写JDBC,各种连接的建立,结果集的处理、连接的释放、异常的处理。虽然自己有了固定的模板,但是还是很繁琐。随后用了spring中JdbcTemplate,spring自动帮我处理了jdbc连接的建立和释放,已经所有可能的异常捕获,我只需要关注的是结果集的处理,这个极大的提高的我开发效率,而且jdbcTemplate 所有的sql都是需要什么自己写,开发时候就是很灵活,而且这种类似原始jdbc的方式性能是也是有保证的。
借助Spring Data 实现自动化的重点内容JPA repository

1、定义查询方法
方法需要个动词、一个可选的主题、关键字By和一个断言组成。
例如:findByUsername(String userName),动词是find,Spring Data允许的动词有read、get、find、count。前三个意思相同,count用来统计返回对象的个数;这里的可选主题为空,断言是Username,是该Entity的一个属性。用下面的图解释会清楚一点。
JPA 使用
断言是方法名称中最重要的部分,她指定了限制结果集的属性,在断言中会有一个或者多个限制结果的条件,每个条件必须引用一个属性,而且还可以指定一个比较操作,比如大于,等于…,如果省略操作符,默认是指等于,findByUsername,就是默认的等于操作,比较的操作种类如下:
JPA 使用
JPA 使用
最后,我们也可以在方法名称的结尾上加上OrderBy,实现结果集的排序。例如:List findByUsernameOrderByUsernameAsc(String userName);结果集按照username增序。
Spring Data 方法命名例子:
1、用到IN、NotIn
List findByUsernameIn(List name)
2、用到Between
List findBycreateDateBetween(String start, String end);

2、声明自定义的查询
有的时候用Spring Data 规范创建的方法名,没有办法完成我们的查询需求,这时候可以用到@Query注解的方式,为Spring Data提供要执行的查询。这时的方法名可以随便写,例如:
@Query(“select name from user”)
List UserLists();