spring-boot
Eine Spring-Boot-Anwendung an MySQL anschließen
Suche…
Einführung
Wir wissen, dass Spring-Boot standardmäßig mit der H2-Datenbank läuft. In diesem Artikel erfahren Sie, wie Sie die Standardkonfiguration an die MySQL-Datenbank anpassen können.
Bemerkungen
Stellen Sie als Voraussetzung sicher, dass MySQL bereits auf Port 3306 ausgeführt wird und Ihre Datenbank erstellt wurde.
Spring-Boot-Beispiel mit MySQL
Wir folgen dem offiziellen Leitfaden für Spring-Boot und Spring-Data-jpa . Wir werden die Anwendung mit Gradle erstellen.
Erstellen Sie die Gradle Build-Datei
build.gradle
buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.3.RELEASE") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'org.springframework.boot' jar { baseName = 'gs-accessing-data-jpa' version = '0.1.0' } repositories { mavenCentral() maven { url "https://repository.jboss.org/nexus/content/repositories/releases" } } sourceCompatibility = 1.8 targetCompatibility = 1.8 dependencies { compile("org.springframework.boot:spring-boot-starter-data-jpa") runtime('mysql:mysql-connector-java') testCompile("junit:junit") }
Erstellen Sie die Kundenentität
src / main / java / hallo / Customer.java
@Entity public class Customer { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String firstName; private String lastName; protected Customer() {} public Customer(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } @Override public String toString() { return String.format( "Customer[id=%d, firstName='%s', lastName='%s']", id, firstName, lastName); } }
Erstellen Sie Repositorys
src / main / java / hallo / CustomerRepository.java
import java.util.List; import org.springframework.data.repository.CrudRepository; public interface CustomerRepository extends CrudRepository<Customer, Long> { List<Customer> findByLastName(String lastName); }
Erstellen Sie die Datei application.properties
################### DataSource Configuration ########################## jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/your_database_name jdbc.username=username jdbc.password=password init-db=false ################### Hibernate Configuration ########################## hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.show_sql=true hibernate.hbm2ddl.auto=update
Erstellen Sie die PersistenceConfig.java-Datei
In Schritt 5 definieren wir, wie die Datenquelle geladen wird und wie sich unsere Anwendung mit MySQL verbindet. Das obige Snippet ist die minimale Konfiguration, die wir benötigen, um eine Verbindung zu MySQL herzustellen. Hier stellen wir zwei Bohnen zur Verfügung:
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages="hello")
public class PersistenceConfig
{
@Autowired
private Environment env;
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory()
{
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(Boolean.TRUE);
vendorAdapter.setShowSql(Boolean.TRUE);
factory.setDataSource(dataSource());
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("hello");
Properties jpaProperties = new Properties();
jpaProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
factory.setJpaProperties(jpaProperties);
factory.afterPropertiesSet();
factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver());
return factory;
}
@Bean
public DataSource dataSource()
{
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
dataSource.setUrl(env.getProperty("jdbc.url"));
dataSource.setUsername(env.getProperty("jdbc.username"));
dataSource.setPassword(env.getProperty("jdbc.password"));
return dataSource;
}
}
- LocalContainerEntityManagerFactoryBean Dies gibt uns einen Überblick über die EntityManagerFactory-Konfigurationen und ermöglicht Anpassungen. Es erlaubt uns auch, den PersistenceContext in unsere Komponenten wie folgt einzubringen:
@PersistenceContext
private EntityManager em;
- DataSource Hier geben wir eine Instanz der
DriverManagerDataSource
. Es ist eine einfache Implementierung der Standard-JDBC-DataSource-Schnittstelle, die einen einfachen alten JDBC-Treiber über Bean-Eigenschaften konfiguriert und für jeden getConnection-Aufruf eine neue Verbindung zurückgibt. Beachten Sie, dass ich empfehle, dies strikt zu Testzwecken zu verwenden, da es bessere Alternativen wieBasicDataSource
gibt. Weitere Einzelheiten finden Sie hier
Erstellen Sie eine Anwendungsklasse
src / main / java / hallo / Anwendung.java
@SpringBootApplication public class Application { private static final Logger log = LoggerFactory.getLogger(Application.class); @Autowired private CustomerRepository repository; public static void main(String[] args) { SpringApplication.run(TestCoreApplication.class, args); } @Bean public CommandLineRunner demo() { return (args) -> { // save a couple of customers repository.save(new Customer("Jack", "Bauer")); repository.save(new Customer("Chloe", "O'Brian")); repository.save(new Customer("Kim", "Bauer")); repository.save(new Customer("David", "Palmer")); repository.save(new Customer("Michelle", "Dessler")); // fetch all customers log.info("Customers found with findAll():"); log.info("-------------------------------"); for (Customer customer : repository.findAll()) { log.info(customer.toString()); } log.info(""); // fetch an individual customer by ID Customer customer = repository.findOne(1L); log.info("Customer found with findOne(1L):"); log.info("--------------------------------"); log.info(customer.toString()); log.info(""); // fetch customers by last name log.info("Customer found with findByLastName('Bauer'):"); log.info("--------------------------------------------"); for (Customer bauer : repository.findByLastName("Bauer")) { log.info(bauer.toString()); } log.info(""); }; }
}
Anwendung ausführen
Wenn Sie eine IDE wie STS verwenden , können Sie einfach mit der rechten Maustaste auf Ihr Projekt klicken -> Ausführen als -> Gradle (STS) Build ... Geben Sie in der Aufgabenliste bootRun und Ausführen ein.
Wenn Sie Gradle in der Befehlszeile verwenden , können Sie die Anwendung einfach wie folgt ausführen:
./gradlew bootRun
Sie sollten so etwas sehen:
== Customers found with findAll():
Customer[id=1, firstName='Jack', lastName='Bauer']
Customer[id=2, firstName='Chloe', lastName='O'Brian']
Customer[id=3, firstName='Kim', lastName='Bauer']
Customer[id=4, firstName='David', lastName='Palmer']
Customer[id=5, firstName='Michelle', lastName='Dessler']
== Customer found with findOne(1L):
Customer[id=1, firstName='Jack', lastName='Bauer']
== Customer found with findByLastName('Bauer'):
Customer[id=1, firstName='Jack', lastName='Bauer']
Customer[id=3, firstName='Kim', lastName='Bauer']