0
点赞
收藏
分享

微信扫一扫

JPA系列:使用原生SQL、使用JPQL查询方法简单例子

言诗把酒 2022-01-31 阅读 60


目录

​​使用原生SQL​​

​​使用JPQL(默认)​​

使用原生SQL


nativeQuery = true,设置表示使用最原生的SQL语句


package com.pjb.jpauserdemo.dao;

import com.pjb.jpauserdemo.entity.UserInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
* 使用原生SQL语言
**/
@Repository
public interface UserSqlDao extends JpaRepository<UserInfo,Integer>
{
/**
* 根据用户ID,获取用户信息
*/
@Query(value = "SELECT * FROM tb_user WHERE user_id = :id",nativeQuery = true)
public UserInfo getUserById(@Param("id")int userId);

/**
* 根据用户姓名,模糊查询用户列表
*/
@Query(value = "SELECT * FROM tb_user WHERE user_name LIKE %:userName%",nativeQuery = true)
public List<UserInfo> getUserListByName(@Param("userName")String userName);

/**
* 修改用户姓名
*/
@Modifying
@Query(value = "UPDATE tb_user SET user_name = :name WHERE user_id = :id",nativeQuery = true)
public int updateUserName(@Param("id")int userId, @Param("name")String userName);
}


使用JPQL(默认)


JPQL使用的是UserInfo实体的属性进行查询。

?1,表示第一个参数

:name,使用name参数


package com.pjb.jpauserdemo.dao;

import com.pjb.jpauserdemo.entity.UserInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
* 使用JPQL语言
**/
@Repository
public interface UserJpqlDao extends JpaRepository<UserInfo,Integer>
{
/**
* 根据用户姓名,查询用户信息
*/
@Query("SELECT u FROM UserInfo u WHERE u.userName = ?1")
public UserInfo getUserInfoByName(String name);

/**
* 根据用户姓名,模糊查询用户列表
*/
@Query("SELECT u FROM UserInfo u WHERE u.userName like %:name%")
public List<UserInfo> getUserListByName(String name);

/**
* 修改用户姓名
*/
@Modifying
@Query("UPDATE UserInfo u SET u.userName = :name WHERE u.userId = :id")
public int updateUserName(@Param("id")int userId, @Param("name")String userName);
}



举报

相关推荐

0 条评论