这一节讲应用查询提示,学这一节比较波折,文档上的介绍太简单了,而且面对示例不知道如何下手,所以拖了一下,才有点头绪。1
2
3
4
5
6public interface UserRepository extends Repository<User, Long> {
@QueryHints(value = { @QueryHint(name = "name", value = "value")},
forCounting = false)
Page<User> findByLastname(String lastname, Pageable pageable);
}
通过之前的讲解和示例,我们掌握了基本的JPA使用方法,大多数是一些查询数据的方法,这一节我们学习通过@Modifying去做数据更新的方法示例。
1 | /** |
通过上一节的学习,我们知道了如何用@Query注解来实现灵活的查询。在上一节的示例中,我也尝试给出简单的排序,通过JPQL语句以及原生SQL来实现的。这样的实现,虽然在一定程度上可以应用,但是灵活度不够,因此结合@Query注解,我们可以使用Sort来对结果进行排序。
经过几天的折腾,终于到了学习一个重量级的查询方式上,使用@Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言,略有区别,后者我们更熟悉一些。话不多说,看代码。
1、在CustomerRepository里添加1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37/**
* 模糊匹配
* @param bauer
* @return
*/
@Query("select c from Customer c where c.firstName=?1")
Customer findByFirstName2(String bauer);
@Query("select c from Customer c where c.lastName=?1 order by c.id desc")
List<Customer> findByLastName2(String lastName);
/**
* 一个参数,匹配两个字段
* @param name2
* @return
* 这里Param的值和=:后面的参数匹配,但不需要和方法名对应的参数值对应
*/
@Query("select c from Customer c where c.firstName=:name or c.lastName=:name order by c.id desc")
List<Customer> findByName(@Param("name") String name2);
/**
* 一个参数,匹配两个字段
* @param name
* @return
* 这里的%只能放在占位的前面,后面不行
*/
@Query("select c from Customer c where c.firstName like %?1")
List<Customer> findByName2(@Param("name") String name);
/**
* 一个参数,匹配两个字段
* @param name
* @return
* 开启nativeQuery=true,在value里可以用原生SQL语句完成查询
*/
@Query(nativeQuery = true,value = "select * from Customer c where c.first_name like concat('%' ,?1,'%') ")
List<Customer> findByName3(@Param("name") String name);
前面讲了Spring-data-JPA的基本配置、继承的方法和创建查询,都比较简单,本节讲预定义查询(NamedQueries)。
预定义查询有两种,一种是通过XML配置
这是最近刚看完的一本关于产品的书,书中主要介绍了很多关于如何优化产品管理,如何实施产品计划规划,以及在产品开发遇到的坑如何解决相关的内容!
内容丰富,干货十足,适合产品经理或产品管理以及从事过一年以上开发的人来看!
我们平时做开发做什么,都选择用64位的操作系统,但是你知道为啥么?大部分人只知道64位的可以支持更多内存,而32位的只能支持到4GB大小的内存。
选64位操作系统的原因如下:
1、设计定位不同
64位是高科技人员使用的,32位是民用的,当然现在大部分的新机器也都采用64位的,32位的机器基本上被淘汰了
2、安装要求不同
所谓要求不同是,很多32位的软件既能安装在32位的也能安装在64位的操作系统上,但是反过来,64位的软件只能运行在64位的操作系统上
3、运算速度不同
64位操作系统运行速度要远远高于32位机器的运行速度
4、寻址能力不同
64位操作系统寻址能力更强,支持内存更大,效率也更高