目录
@Query注解的用法
1.一个使用@Query注解的简单例子
2.Like表达式
3.使用NativeSQLQuery
4.使用@Param注解注入参数
5.SPEL表达式(使用时请参考最后的补充说明)
6.一个较完整的例子
7.解释例6中错误的原因
@Query注解使用详情
常用属性
取值方式
CRUD

@Query注解的用法

1.一个使用@Query注解的简单例子
@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")List<Book> findByPriceRange(long price1, long price2);
2.Like表达式
@Query(value = "select name,author,price from Book b where b.name like %:name%")List<Book> findByNameMatch(@Param("name") String name);
3.使用Native SQL Query
所谓本地查询,就是使用原生的sql语句(根据数据库的不同,在sql的语法或结构方面可能有所区别)进行查询数据库的操作。
@Query(value = "select * from book b where b.name=?1", nativeQuery = true)List<Book> findByName(String name);
4.使用@Param注解注入参数
@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author, @Param("price") long price);
5.SPEL表达式(使用时请参考最后的补充说明)
‘#{#entityName}’值为’Book’对象对应的数据表名称(book)。

public interface BookQueryRepositoryExample extends Repository<Book, Long>{ @Query(value = "select * from #{#entityName} b where b.name=?1", nativeQuery = true) List<Book> findByName(String name);}
6.一个较完整的例子
public interface BookQueryRepositoryExample extends Repository<Book, Long> { @Query(value = "select * from Book b where b.name=?1", nativeQuery = true) List<Book> findByName(String name);// 此方法sql将会报错(java.lang.IllegalArgumentException),看出原因了吗,若没看出来,请看下一个例子 @Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2") List<Book> findByPriceRange(long price1, long price2); @Query(value = "select name,author,price from Book b where b.name like %:name%") List<Book> findByNameMatch(@Param("name") String name); @Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price") List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author, @Param("price") long price);}
7.解释例6中错误的原因
因为指定了nativeQuery = true,即使用原生的sql语句查询。使用java对象’Book’作为表名来查自然是不对的。只需将Book替换为表名book。
@Query(value = "select * from book b where b.name=?1", nativeQuery = true)List<Book> findByName(String name);

更多相关文章

  1. Android(安卓)NDK 知识系列(五)
  2. Android在layout xml中使用include
  3. Tab形式的菜单实现总结TabHost 和 FragmentTabHost
  4. android的socket开发注意事项
  5. Android帮助文档(第二部分)开发工具
  6. 【Demo 0005】Android(安卓)资源
  7. Android中使用WebView, WebChromeClient和WebViewClient加载网页
  8. Android(安卓)网络请求库Retrofit简单使用
  9. 使用eclipse创建android工程时得到警告

随机推荐

  1. Android高德地图自定义放大缩小控件
  2. 在android中使用OrmLite数据库框架
  3. Android map
  4. Mac 配置Android环境变量( 有图)
  5. Android 编辑框(EditText)属性
  6. 新浪微博Android客户端SSO授权认证缺陷
  7. android中adb命令大全
  8. Android 性能优化的一些方法
  9. 【android乱七八糟】android体系结构
  10. OpenJDK将对Android开发产生怎样的影响?