SQL Table 不是从架构-mysql.sql 文件创建的
The SQL Table is not being created from the schema-mysql.sql file
我正在尝试使用 Spring Boot 和 JDBC.[=18= 创建一个应用程序]
但是,Table 的创建并未启动。
我创建了一个 schema-mysql.sql
文件来创建 table。
schema-mysql.sql
文件如下:
DROP TABLE IF EXISTS Pirate;
CREATE TABLE Pirate (
id INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100) NOT NULL,
Email VARCHAR(100) NOT NULL
);
应用程序属性:
server.port=8081
spring.datasource.url=jdbc:h2:mem:testdb
spring.data.jpa.repositories.bootstrap-mode=default
spring.h2.console.enabled=true
用于与数据库交互的存储库:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;
@Repository
public class PirateRepository extends JdbcDaoSupport {
@Autowired
DataSource dataSource;
@PostConstruct
private void initialize() {
setDataSource(dataSource);
}
public void insertPirate(Pirate pirate)
{
String sql = "INSERT INTO Pirate "+"(Name,Email) VALUES (?,?)";
getJdbcTemplate().update(sql,new Object[] {pirate.getName(),pirate.getEmail()});
}
public List<Pirate> getAllPirates(){
String sql = "SELECT * FROM Pirate";
List<Map<String,Object>> rows = getJdbcTemplate().queryForList(sql);
List<Pirate> result = new ArrayList<>();
for(Map<String, Object> row:rows) {
Pirate pirate = new Pirate();
pirate.setId((Integer)row.get("id"));
pirate.setName((String)row.get("Name"));
pirate.setEmail((String)row.get("Email"));
result.add(pirate);
}
return result;
}
}
你能告诉我由于 table 没有启动,我错过了什么吗?根据程序问题,不能使用Jpa或Crud Repository
尝试在您的属性文件中定义 spring.datasource.platform=mysql
。
我正在尝试使用 Spring Boot 和 JDBC.[=18= 创建一个应用程序]
但是,Table 的创建并未启动。
我创建了一个 schema-mysql.sql
文件来创建 table。
schema-mysql.sql
文件如下:
DROP TABLE IF EXISTS Pirate;
CREATE TABLE Pirate (
id INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100) NOT NULL,
Email VARCHAR(100) NOT NULL
);
应用程序属性:
server.port=8081
spring.datasource.url=jdbc:h2:mem:testdb
spring.data.jpa.repositories.bootstrap-mode=default
spring.h2.console.enabled=true
用于与数据库交互的存储库:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;
@Repository
public class PirateRepository extends JdbcDaoSupport {
@Autowired
DataSource dataSource;
@PostConstruct
private void initialize() {
setDataSource(dataSource);
}
public void insertPirate(Pirate pirate)
{
String sql = "INSERT INTO Pirate "+"(Name,Email) VALUES (?,?)";
getJdbcTemplate().update(sql,new Object[] {pirate.getName(),pirate.getEmail()});
}
public List<Pirate> getAllPirates(){
String sql = "SELECT * FROM Pirate";
List<Map<String,Object>> rows = getJdbcTemplate().queryForList(sql);
List<Pirate> result = new ArrayList<>();
for(Map<String, Object> row:rows) {
Pirate pirate = new Pirate();
pirate.setId((Integer)row.get("id"));
pirate.setName((String)row.get("Name"));
pirate.setEmail((String)row.get("Email"));
result.add(pirate);
}
return result;
}
}
你能告诉我由于 table 没有启动,我错过了什么吗?根据程序问题,不能使用Jpa或Crud Repository
尝试在您的属性文件中定义 spring.datasource.platform=mysql
。