[JAVA] Ich möchte eine Verbindung herstellen, wenn eine Datenbank mit Spring und MyBatis erstellt wird

Was willst du tun

Realisierungsmethode

--static_db verwendet normalerweise die XML-Konfigurationsdatei (spring-servlet.xml) --dynamic_db generiert dynamisch SqlSessionFactory ohne ** Verwendung der XML-Konfigurationsdatei **

Implementierung

Verschiedene Versionen

Festlegen der Verbindungsinformationen für static_db

spring-servlet.xml


  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://10.0.0.101:3306/static_db" />
    <property name="username" value="root" />
    <property name="password" value="password" />
  </bean>

  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="sample.da.mapper" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  </bean>

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" name="sqlSessionFactory">
    <property name="dataSource" ref="dataSource"></property>
    <property name="mapperLocations" value="classpath*:sample/da/mapper/*.xml"/>
  </bean>

  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
  </bean>
  <tx:annotation-driven transaction-manager="transactionManager"/>

Zugriff auf static_db

Verwenden Sie eine DI Mapper-Instanz

@Service
public class StaticDb01AccessService {

	@Autowired
	private UsersMapper usersMapper;
	
	public void insert() {
		Users record = new Users();
		record.setNum("001");
		record.setName("Ichiro Tanaka");
		record.setCreated(new Date());
		record.setUpdated(new Date());
		usersMapper.insert(record);
	}
}

Zugriff auf dynamic_db

Generieren Sie manuell SqlSessionFactory und Mapper

@Service
public class DynamicDbAccessService {

	//Zum Beispiel 10.0.0.115 dynamisch_Wird aufgerufen, als db erstellt wurde
	public void insert(String endpoint) throws Exception {
		DataSource dataSource = getDataSource(endpoint); // endpoint「10.0.0.115」
		
		TransactionFactory trxFactory = new JdbcTransactionFactory();
		
		Environment env = new Environment("dynamic_db", trxFactory, dataSource);
		
		Configuration config = new Configuration(env);
		TypeAliasRegistry aliases = config.getTypeAliasRegistry();
		aliases.registerAlias("user", Users.class);
		
		config.addMapper(UsersMapper.class);
		
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config);
		SqlSession session = factory.openSession();
		
		try {
			UsersMapper usersMapper = session.getMapper(UsersMapper.class);
			
			Users record = new Users();
			record.setNum("001");
			record.setName("Ichiro Tanaka");
			record.setCreated(new Date());
			record.setUpdated(new Date());
			
			usersMapper.insert(record);
			
			session.commit();
		} catch (Exception e) {
			session.rollback();
		} finally {
			session.close();
		}
	}

	private DataSource getDataSource(String endpoint) {
		BasicDataSource dataSource = new BasicDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl(String.format("jdbc:mysql://%s/dynamic_db", endpoint));
		dataSource.setUsername("root");
		dataSource.setPassword("password");
		return dataSource;
	}
}

Recommended Posts

Ich möchte eine Verbindung herstellen, wenn eine Datenbank mit Spring und MyBatis erstellt wird
Wenn ich die Internationalisierung mit Spring Boot unterstütze, bin ich süchtig danach, kein bestimmtes Gebietsschema zu übersetzen
Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Methode aufrufen und die Nummer zählen
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Wenn das JDBC-Verbindungspooling erstellt wird
ProxyFactory ist praktisch, wenn Sie AOP mit Spring testen möchten!
Ich habe versucht, Spring + Mybatis + DbUnit zu verwenden
Dinge, die beim Ausführen eines bestimmten Jobs mit Spring Batch zu beachten sind
Ich wollte eine Zeile animieren, wenn ich Realm und RecyclerView unter Android verwende, aber ich habe aufgegeben
Ich möchte eine Datei mit Ruby im Internet herunterladen und lokal speichern (mit Vorsicht).
Ich habe die Punkte zusammengefasst, die bei der kombinierten Verwendung von Ressourcen und Ressourcen zu beachten sind
Als ich ein mit WildFly Swarm erstelltes Glas ausführte, erhielt ich eine InvocationTargetException.
Eine Geschichte, der ich beim Testen der API mit MockMVC verfallen war
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Ich möchte Apache Wicket 8 zusammenfassen, weil es eine gute Idee ist
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
"Lehrer, ich möchte im Frühjahr eine Anmeldefunktion implementieren" ① Hallo Welt
Ich möchte eine Webanwendung entwickeln!
Ich möchte ein schönes build.gradle schreiben
Ich möchte einen Unit Test schreiben!
Als ich in Spring Boot eine Sitzungsbereichs-Bean definierte, verhielt sie sich seltsam und musste angepasst werden.
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
[Java] Ich habe JDBC installiert und versucht, eine Verbindung mit Servlet + MySQL herzustellen. (Es gibt eine Version mit DAO / Bean)
Entspricht einer Eigenschaft, deren Typ mit JsonDeserializer leer wird, wenn er leer ist
Eine Geschichte, als ich versuchte, ein Video zu erstellen, indem ich Processing und Resolume verknüpfte
Ich möchte in der Lage sein, Dateien mit refile mit administrate [rails6] zu lesen.
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
Wenn Sie irgendwo einen Fehler melden möchten, wenn Sie graphql-spring-boot mit Spring Boot verwenden
Ich möchte rekursiv die Oberklasse und die Schnittstelle einer bestimmten Klasse erhalten
Wir stellen vor, was ich gemacht habe, als ich RecyclerView eine Kopf- und Fußzeile hinzufügen wollte
[Ruby] Ich möchte einen Methodensprung machen!
Memo beim Tappen und Entwickeln mit JavaFX
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
Ich möchte eine Struktur für die Ausnahmebehandlung entwerfen
Ich habe versucht, JavaFX und Spring Framework zu verknüpfen.
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, mit Java und Spring eine Funktion / einen Bildschirm für den Administrator einer Einkaufsseite zu erstellen
[MyBatis] Ich möchte eine Abfrageabfrage einer Tabelle zuordnen, die eine Eins-zu-Viele-Beziehung zu einer verschachtelten Bean hat.
Wovon ich süchtig war, als ich eine Spring Boot-Anwendung mit VS Code entwickelte
Beachten Sie, dass ich süchtig nach Stapelverarbeitung mit Spring Boot war
Bei der Erstellung einer persönlichen App habe ich mich gefragt, ob ich sie mit haml erstellen soll
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Eine Seite, die leicht zu verstehen war, als ich anfing, Spring Boot zu lernen
Ich möchte PowerMock in einer Klasse verwenden, die parametrisierte Tests und gewöhnliche Tests kombiniert
Eine Geschichte, nach der ich süchtig war, als ich einen Schlüssel bekam, der automatisch auf MyBatis ausprobiert wurde
Ich möchte es zusätzlich implementieren, während ich Kotlin auf einer Site verwende, auf der Java ausgeführt wird
Ich möchte eine Methode einer anderen Klasse aufrufen
Ich möchte den Bereich anhand des monatlichen Abschlusses beurteilen
Ich möchte ein kleines Symbol in Rails verwenden
Ein Memorandum beim Versuch, eine GUI mit JavaFX zu erstellen
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich habe im Frühjahr einen Restful-Server und -Client erstellt.
Ich möchte eine Funktion in der Rails Console definieren
[Einführung in Spring Boot] Senden Sie ein Formular mit thymeleaf