将自己的方法应用于h2

时间:2019-05-02 12:31:43

标签: java spring jpa h2

我已经开始学习Spring,并且正在尝试将电影的标题,类型,年份和演员数据存储在数据库(h2)中。如何使用我自己的代码中的方法从该数据库中获取数据以使用system.out.println()在控制台中将其打印出来?

我有MovieActor的类及其对应的属性,都用@Entity批注标记。接下来,我有一个扩展JpaRepository的接口(我知道有找到所有电影的默认方法,但是我想用自己的方法创建此功能):

public interface MovieDaoI extends JpaRepository<Movie, Long> {

    @Query("SELECT m FROM Movie m")
    public List<Movie> list();

}

此外,我有一个H3数据库,其中已初始化3部电影(在启动时使用属性文件),并且可以访问h2控制台并使用Web界面创建SQL查询。但是我想要的是在另一个名为list()的类中使用main方法调用我的方法MoviesApplication,并使用返回的List并使用简单的system.out.println()在控制台中将其打印出来。有什么办法吗?

3 个答案:

答案 0 :(得分:0)

在您的情况下,您使用的是JPQL而不是SQL查询, 如果您只想使用SQL查询,则应如下所示: @Query(value =“ SELECT m FROM Movie m”,nativeQuery = true)

答案 1 :(得分:0)

@Service //您需要添加此@Service
公共类Bookservice {

@Autowired //您需要添加此@Autowired
  私人MovieDaoI movieDaoI;

公共列表list(){
    返回MovieDaoI .list();
  }

}

答案 2 :(得分:0)

我不清楚您的确切问题是什么。但是我认为您在如何调用Bean中的存储库方法方面遇到问题。

在bean和SpringBootApplication类中,您可以使用autowired获取已创建的存储库代理,然后调用方法:

@SpringBootApplication
class MoviesApplication {

    @AutoWired
    MovieDaoI movieDaoI;

    public void someMethod() {
        movieDaoI.list();
    }
}

但是我认为这不是一个好主意。尝试创建服务或创建测试方法