gpt4 book ai didi

java - 使用 Spring Boot + Hibernate + MySql 运行 MVC 应用程序

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:41 24 4
gpt4 key购买 nike

我是 Spring 环境的新手。我正在尝试使用 SpringBoot 开发一个基本的 MVC 应用程序,将 Hibernate 作为 ORM,将 MYSQL 作为数据库。我在设置依赖项和配置时遇到了很多麻烦。目前,我对以下错误感到震惊,但我无法弄清楚如何克服它。

org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.

这是我在应用程序中的设置。它没有服务层和jsp页面以避免困惑

数据库:

MySql - 一个名为 Users 的数据库已经存在,它有一个名为 Users 的表,其中包含用户示例列表

User.java(模型)

@Entity
@Table(name = "Users")
public class User {

@Id
@GeneratedValue
public String id;

public String username;

public String firstname;

public String lastname;

public String password;
}

用户资料库:

@Repository
@Table(name = "Users")
public interface UserRepository extends JpaRepository<User, String> {
}

用户 Controller :

@RestController
public class UserController {

private UserRepository userRepository;

@Autowired
public UserController(UserRepository userRepository)
{
this.userRepository = userRepository;
}

@RequestMapping("user")
public void getUser(@RequestParam("id") String id) {
User user = userRepository.findOne(id);
}

}

应用程序属性:

server.port: 9000

spring.datasource.url: jdbc:mysql://localhost/Users

spring.datasource.driverClassName: com.mysql.jdbc.Driver

spring.datasource.username: root

spring.datasource.password:

POM.xml

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.3.RELEASE</version>
</parent>

<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- HIBERNATE -->

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.0.Final</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.0.Final</version>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<optional>true</optional>
</dependency>

<!-- Spring ORM, works with Hibernate -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>

<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

</dependencies>

编辑:添加主类

主类

@ComponentScan
@Configuration
@EnableAutoConfiguration
public class ApplicationStart {
public static void main(String[] args)
{
SpringApplication.run(ApplicationStart.class, args);
}
}

这是我的应用程序的当前设置。我什至似乎不知道在哪里寻找错误,互联网上的教程对我的事业没有帮助。因此,非常感谢任何有关如何解决异常的帮助。

如果需要更多信息,请发表评论。

谢谢-

最佳答案

确保您的application.properties 位于supported locations 之一.

  1. A /config subdir of the current directory.
  2. The current directory
  3. A classpath /config package
  4. The class path root

The list is ordered by precedence (locations higher in the list override lower items).

尽管在属性文件中使用 : 分隔键/值对应该可行,但我建议坚持使用更常用的 = 分隔符。

你的 pom 包含一些不必要的困惑,我建议你移动。您应该只需要对 mysql-connector-java 的依赖,其他一切都是杂乱无章的(其他依赖是通过您依赖的启动项目提供的)。

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>

这些应该是您需要的一切,版本和传递依赖项由 spring-boot-dependency pom.xml 处理。 (起始 parent 的祖 parent )。

使用 @EnableAutoConfiguration 时注释带有注释的类也将用于确定from which package开始扫描。通常,您会将此注释放在您的入门类(class)中。建议将此应用程序类放在顶级包中(即 your.package.application.StarterClass),所有其他包都应该是该包的子包。这样所有的类都会被自动检测到。

如果那不可能,您可能需要添加一个额外的 @ComponentScan 来指定一个基础包以开始扫描和一个 @EntityScan指定包含您的实体的包。

关于java - 使用 Spring Boot + Hibernate + MySql 运行 MVC 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24514981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com