我有一个重要的问题:
这是一个简单的4步过程:
但是在使用两个数据库的情况下,有一个5。必须定义@configuration
类的步骤。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
## D1
datasource.db1.driverClassName=...
datasource.db1.username=...
datasource.db1.password=...
datasource.db1.jdbcUrl=...
## D2
datasource.db2.driverClassName=...
datasource.db2.username=...
datasource.db2.password=...
datasource.db2.jdbcUrl=...
@Table("STUDENT_TABLE")
public class Student{
@Id
@Column("MAT_NR")
private BigDecimal matNr;
@Column("NAME")
private String name;
}
@Table("TEACHER_TABLE")
public class Teacher{
@Id
@Column("EMPLOYEE_NR")
private BigDecimal employeeNr;
@Column("NAME")
private String name;
}
@Repository
public interface StudentRepository extends CrudRepository<Student, BigDecimal> {}
@Repository
public interface TeacherRepository extends CrudRepository<Teacher, BigDecimal> {}
db1config.java
@Configuration
public class Db1Config {
@Primary
@Bean("db1DataSource")
@ConfigurationProperties("datasource.db1")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
}
java db2config.java
@Configuration
public class Db2Config {
@Bean("db2DataSource")
@ConfigurationProperties("datasource.db2")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
}
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired @Qualifier("studentRepository") StudentRepository studentRepository
@Autowired @Qualifier("teacherRepository") TeacherRepository teacherRepository
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
studentRepository.findById(30688).ifPresent(System.out::println); // DB1
teacherRepository.findById(5).ifPresent(System.out::println); // DB2
}
}
谢谢你的帮助。
类似于Rimidal,我不相信这行得通。这里的文档表明您需要一个NamedParameterJdbcOperations Bean和一个TransactionManager Bean(可选)。https://docs.spring.io/spring-data/jdbc/docs/current/reference/html" target="_blank">html/#jdbc.java-config
NamedParameterJdbcOperations是CrudRepositories将用于访问数据库的JDBCTemplate。
似乎没有一种方法可以将不同名称的ParameterJDBCOperations/JDBCTemplates与不同的存储库关联起来。在我的测试中,这无论如何都不起作用。无论哪个命名的ParameterJDBCOperations Bean被标记为@Primary都是所有CrudRepository操作都要执行的操作,而不考虑将内容分离到不同的包中,并明确地告诉@Configuration类将哪些包与@EnableJDBCrepositories一起使用。
我需要创建一个实现接口的类吗?如果是,如何实施?有什么例子吗?或者我只是把它留空然后Spring来做这些工作? 我使用以下简单代码进行尝试: loginbean.java 但我得到 更新 好的,我发现了问题,是因为我的autowired accountRepository是空的,你知道吗?
他能给我建议和解决方案。非常感谢。请帮帮我!
本文向大家介绍使用mock.js随机数据和使用express输出json接口的实现方法,包括了使用mock.js随机数据和使用express输出json接口的实现方法的使用技巧和注意事项,需要的朋友参考一下 前端项目都会用到后端的接口,但当后台接口没有写好的时候,这时候可以用mock.js先随机生成一些假数据来调试页面 安装mock.js 先用express创建一个nodejs的web项目,名字假
我必须使用任何额外的关键字的id Param吗?什么是“!”签名里的刻薄?
我有一个实现两个接口的bean。准骨骼代码如下: 在AppConfig中,我指定了以下内容: 解决办法是引入一个扩展和的新接口,然后让实现它。但是,我不愿意因为框架的限制而改变我的设计。
我试图实现Comparable和compareTo(),但似乎无法实现。我一直在尝试不同的方法,但我真的不明白。我知道我应该实现可比较的接口,并且我需要在使用它之前创建方法(对我来说很奇怪,从python到面向对象编程)。 我希望它能比较两个人的年龄,所以我试着编写如下所示的代码,但似乎我不能使用compareTo()。我收到错误消息:“此方法必须返回int类型”,但在我看来,我只返回1、-1和0