使用Query注解实现查询
@Query注解使用是JPQL语法进行查询的,其实JPQL语法和HQL语法是类似的,把JPQL当HQL使用即可,底层依然是将JPQL翻译成sql语句进行执行的
创建接口
@Query(value = "from Users")
List<Users> findByUsersIsUseJPQL();
/**
* @param name
* @description: 注意查询时候的占位符设置 是根据参数的位置进行赋值的
* @return:
* @author: shinelon
* @time: 2019/8/20:11:49
*/
@Query(value = "from Users where username = ?")
List<Users> findByUsersByNameUseJPQL(String name);
@Query(value = "from Users where username = ? and password = ?")
List<Users> findByUsersUsernameAndPassword(String username,String password);
测试类
/**
* 使用JPQL语句条件查询
*/
@Test
public void test6(){
List<Users> list = this.userDao.findByUsersUsernameAndPassword("123","1234");
for (Users u :
list) {
System.out.println(u);
}
}
/**
* 使用JPQL语句条件查询
*/
@Test
public void test5(){
List<Users> list = this.userDao.findByUsersByNameUseJPQL("123");
for (Users u :
list) {
System.out.println(u);
}
}
/**
* 使用JPQL语句查询全部
*/
@Test
public void test4(){
List<Users> list = this.userDao.findByUsersIsUseJPQL();
for (Users u :
list) {
System.out.println(u);
}
}
查询全部
条件查询
多条件查询
二)使用@Query注解实现纯SQL查询
需要使用注解内的nativeQuery 属性设为true,表示开启本地查询,不对value内的SQL语句进行翻译
代码演示在注解上开启指定的数据即可
/**
* 使用JPQL语句条件查询
*/
@Test
public void test7(){
List<Users> list = this.userDao.findByNameUsernameAndPasswordUseSQL("123", "1234");
for (Users u :
list) {
System.out.println(u);
}
}
结果:使用原生的sql语句实现了查询
三)@Query注解完成修改的操作
使用@Query注解进行数据修改数据库的时候,需要配合@Modifying注解一起使用
@Modifying注解的用处就是告诉SpringData当前执行的语句为修改语句
@Query(value = "update Users set username = ? where userid = ?")
@Modifying//表示此语句为修改语句,如果是修改语句话要开启此注解
int updateUsersPasswordByUserid(String password, Integer userid);
@Test
@Transactional
@Rollback(false)
public void test8(){
int yyyy = this.userDao.updateUsersPasswordByUserid("yyyy", 2);
System.out.println(yyyy);
}
结果