springboot+thymeleaf网页如何同时显示两个数据库表
时间: 2023-08-18 20:08:35 浏览: 192
你可以使用Spring Data JPA来访问两个数据库表,然后在Thymeleaf模板中分别展示它们的数据。
首先,在你的Spring Boot应用中,你需要配置两个数据源和实体管理器工厂。这个可以通过在application.properties文件中添加以下配置来完成:
```
# 第一个数据源
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 第二个数据源
datasource2.url=jdbc:mysql://localhost:3306/db2
datasource2.username=root
datasource2.password=password
datasource2.driver-class-name=com.mysql.jdbc.Driver
# 配置JPA
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
```
然后,你需要在你的应用中定义两个数据源的JdbcTemplate实例,以便你可以使用它们来执行查询。这可以通过像这样在你的应用中定义两个JdbcTemplate实例来完成:
```
@Configuration
public class DataSourceConfig {
@Bean(name = "jdbcTemplate1")
public JdbcTemplate jdbcTemplate1(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "jdbcTemplate2")
public JdbcTemplate jdbcTemplate2(@Qualifier("dataSource2") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
```
接下来,你需要为每个数据库表定义一个实体类,并使用Spring Data JPA创建一个存储库来访问它们。例如,对于一个名为“table1”的表,你可以定义一个名为“Table1”的实体类和一个名为“Table1Repository”的存储库:
```
@Entity
@Table(name = "table1")
public class Table1 {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
// 省略getter和setter
}
@Repository
public interface Table1Repository extends JpaRepository<Table1, Long> {
}
```
然后,在你的控制器中,你可以注入这两个存储库,并使用它们来获取两个数据库表的数据。例如:
```
@Controller
public class MyController {
@Autowired
private Table1Repository table1Repository;
@Autowired
@Qualifier("jdbcTemplate2")
private JdbcTemplate jdbcTemplate2;
@GetMapping("/")
public ModelAndView index() {
List<Table1> table1List = table1Repository.findAll();
List<Map<String, Object>> table2List = jdbcTemplate2.queryForList("SELECT * FROM table2");
ModelAndView modelAndView = new ModelAndView("index");
modelAndView.addObject("table1List", table1List);
modelAndView.addObject("table2List", table2List);
return modelAndView;
}
}
```
最后,在Thymeleaf模板中,你可以使用类似以下的代码来展示这两个数据库表的数据:
```
<!-- 展示第一个数据库表的数据 -->
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
</tr>
</thead>
<tbody>
<tr th:each="table1 : ${table1List}">
<td th:text="${table1.id}"></td>
<td th:text="${table1.name}"></td>
</tr>
</tbody>
</table>
<!-- 展示第二个数据库表的数据 -->
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>age</th>
</tr>
</thead>
<tbody>
<tr th:each="table2 : ${table2List}">
<td th:text="${table2.id}"></td>
<td th:text="${table2.name}"></td>
<td th:text="${table2.age}"></td>
</tr>
</tbody>
</table>
```
阅读全文