接着上篇博客。上篇博客简单介绍了jpa的基本使用,以及如何根据定义方法名让jpa自动生成sql语句,这次来看看如何自定义sql语句。
jpa自定义sql语句是在方法上加上@Query注解,这和mybatis使用注解很像,不过mybatis有@Select,@Delete,@Update,@Insert 四种注解,而jpa只需要@Query。先来看一个简单的例子:
@Query(value = "select u from User u where u.username= ?1")
User findByUsername2(String username);
在默认的情况下,jpa不允许你使用“*”,也就是说不能出现 select * from... ,这样的语句,jpa会报错,还有一个就是这里的User需要首字母大写。不能使用* 我们一般会在给表取个别名,用别名代替*,如上面的例子所示。
如果非要使用*,可以在后面加上 nativeQuery = true,例子如下:
@Query(value = "select * from User u where u.username= ?1",nativeQuery = true)
User findByUsername2(String username);
加上nativeQuery的意思就是使用原生的sql,不需要jpa为我们做处理。</