1.查询
使用基类接口Repository。
1)基于方法名称命名规则查询
规则:findBy(关键字)+属性名称(属性名称的首字母大写)+查询条件(首字母大写)
注意:在Repository 子接口中声明方法:
-
-
-
- 不是随便声明的,而需要符合一定的规范
- 查询方法以 find | read | get 开头
- 涉及条件查询时,条件的属性用条件关键字连接
- 要注意的是:条件属性以首字母大写
- 支持属性的级联查询。若当前类有符合条件的属性,则优先使用,而不使用级联 属性。若需要使用级联属性,则属性之间使用_连接
-
-
2)基于@Query 注解查询
1.JPQL:通过 Hibernate 的 HQL 演变过来的。他和 HQL 语法及其相似。nativeQuery =false。
@Query("from Users where username = ?1 and userage >= ?2") List<Users> queryUserByNameAndAge(String name,Integer age);
2.原生SQL 语句本地查询。nativeQuery =true
@Query(value="select * from t_users where username = ?1 and userage >= ?2",nativeQuery=true) List<Users> queryUserByNameAndAgeUseSQL(String name,Integer age);
注意:1.如果使用原生Sql本地化查询,@Query注解中SQL的表名和字段名均是数据库表名和字段名。
2.如果是JPQL(nativeQuery =false),@Query注解中SQL的表名和字段名均是实体的名和实体的字段名。
3.@Query注解中SQL的‘?’代表参数的,?1代表方法的第一参数,?2代表第二个参数。
2.增加,删除,修改
1)使用CurdRepository接口提供的delete,Save等方法。
2)基于@Query 注解,同上面的基于@Query 注解的查询,只不过需要增加 @Transactional和@Modifying的注解
@Transactional
@Modifying
@Query("update User set username = ?2,remark = ?3 where userid = ?1")
int updateUserNameByUserId(int userId,String userName,String remark);