赞
踩
@Query
注解,进行编写查询,修改,删除,增加的sql在**删除和修改,增加方法需要有@Modifying**注解
.也可以根据需要添加 @Transactional
对事物的支持,查询超时的设置等
@Modifying
@Query("update User u set u.userName = ?1 where u.id = ?2")
int modifyByIdAndUserId(String userName, Long id);
@Transactional
@Modifying
@Query("delete from User where id = ?1")
void deleteByUserId(Long id);
@Transactional(timeout = 10)
@Query("select u from User u where u.emailAddress = ?1")
User findByEmailAddress(String emailAddress);
下表索引传参
@Query ( "select u from t_user u where id>?1 and username like ?2" )
List <User > selectUserByParam ( Long id , String name );
@param 命名参数传参
@Query ( "select u from t_user u where id>:id and username like :name" )
List <User > selectUserByParam ( @param('id') Long id , @param('name') String name );
@Query(value="select * from t_user", nativeQuery=true)
List <User > selectAll()
有nativeQuery = true时,是可以执行原生sql语句,所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了
nativeQuery = false时,就不是原生sql,而其中的select * from 的xxx中xxx也不是数据库对应的真正的表名,而是对应的实体名,并且sql中的字段名也不是数据库中真正的字段名,而是实体的字段名。
【推荐】自定义接收指定sql的接口对象,这种方式能够根据需要查询需要展示的字段。 package gds.health.domain; /** * 此接口中可以定义多于和接收参数有关的get Methond */ public interface UserPoint { String getUserId(); String getUserName(); String getEmail(); String getClassName(); Integer getUPoints(); } // 使用定义接口方式实现原生sql 的数据获取 @Query(value="select u.id userId, u.login userName, sum(p.meals + p.alcohol + p.excercise) uPoints from Points p, jhi_user u where p.user_id=u.login group by u.id", nativeQuery=true) List<UserPoint> findUserPoint();
注意:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。