mybatics,dao层接口,mapper:
public interface UserMapper {
@Select("SELECT * FROM T_ROLE WHERE ROLE_NAME = #{role_name}")
User findByName(@Param("role_name") String role_name);
@Insert("INSERT INTO T_ROLE(ROLE_NAME, NOTE) VALUES(#{role_name}, #{note})")
int insert(@Param("role_name") String role_name, @Param("note") String note);
}
jpa,dao层接口,Repository:
@Repository
public interface TSysUserRepository extends JpaRepository<TSysUser, String>, JpaSpecificationExecutor<TSysUser>{ @Query(value = "select tsu from TSysUser tsu where tsu.stAccount=:stAccount ")
TSysUser findLoginUser(@Param("stAccount") String stAccount);
}
jpa,索引参数与命名参数:
(1)索引参数如下所示,索引值从1开始,查询中 ”?X” 个数需要与方法定义的参数个数相一致,并且顺序也要一致
//@Modifying 和@Query 这两个annotation一起声明,可定义个性化更新操作,例如只涉及某些字段更新时最为常用
@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname); (2)命名参数(推荐使用这种方式)
可以定义好参数名,赋值时采用@Param("参数名"),而不用管顺序。如下所示:
public interface UserRepository extends JpaRepository<User, Long> { @Query("select u from User u where u.firstname = :firstname or u.lastname = :lastname")
User findByLastnameOrFirstname(@Param("lastname") String lastname, @Param("firstname") String firstname);
}