Comme le titre l'indique, je vais essayer de me connecter à MySQL à partir d'une application Java créée avec Spring Boot. Utilisez MyBatis pour le mappeur O / R. * Qu'est-ce que mes Batis
Puisqu'il correspond à la suite de j'ai essayé de construire l'environnement Veuillez vous y référer également pour l'environnement prérequis.
Si vous ne pouvez pas vous connecter, n'hésitez pas à commenter.
Entrons dans le sujet principal à partir d'ici. Cette fois, je vais simplement créer une API ** qui récupérera toutes les données de la base de données dans une liste lorsque vous enverrez une requête ** GET. Cliquez ici pour les noms de table et les données de test (https://qiita.com/supreme0110/items/896cfa0349be5eacfed5#4-1-db%E3%81%AB%E3%83%86%E3%83%BC%E3% On suppose que 83% 96% E3% 83% AB% E3% 82% 92% E4% BD% 9C% E3% 82% 8B) est inclus.
Les dépendances sont insuffisantes simplement en construisant l'environnement la dernière fois, ajoutons donc des dépendances. Nous utiliserons le pratique Spring Initializer. ** Ajoutez Web et Lombok ** à MySQL, MyBatis et cliquez sur ** Générer un projet **. * Qu'est-ce que Lombok
Copiez le contenu de build.gradle du zip téléchargé vers build.gradle de votre projet. Juste au cas où, ** Rafraîchir **.
J'ai pu capturer la dépendance en toute sécurité.
Ensuite, jouez avec le plug-in côté IntelliJ. Ouvrez les paramètres avec ** Ctrl + Alt + S ** et cliquez sur ** Parcourir les référentiels ... ** au bas de ** Plugins **.
Si vous recherchez lombok, vous trouverez ** Plugin Lombok **, alors cliquez sur ** Installer ** pour l'installer.
Si vous pouvez l'installer, le mot ** Installer ** remplacera ** Redémarrer IntelliJ IDEA **, alors cliquez dessus pour redémarrer. C'est OK quand il est redémarré!
Vous êtes prêt à partir! Passons à la programmation!
Cette fois, rendons les choses incroyablement simples, avec une configuration ** contrôleur et mappeur uniquement **. (Bien qu'il existe des classes de données, etc.) Veuillez noter que nous n'expliquerons pas la source en profondeur.
java:com.example.sampleapi.controller.SampleController.java
@RestController
@RequiredArgsConstructor
public class SampleController {
private final UsersMapper usersMapper; // (1)
@GetMapping("/get/sample")
public List<SampleResponse> getSample() {
List<UsersEntity> usersEntityList = usersMapper.findUserList(); // (2)
return usersEntityList.stream().map(SampleResponse::create).collect(Collectors.toList()); // (3)
}
}
java:com.example.sampleapi.controller.resource.SampleResponse.java
@Value // (4)
public class SampleResponse {
private Integer userId;
private String userName;
public static SampleResponse create(UsersEntity entity) { // (5)
return new SampleResponse(
entity.getUserId(),
entity.getUserName()
);
}
}
Une brève explication.
(1). @ RequiredArgsConstructor
génère automatiquement un constructeur qui attribue la valeur initiale au champ avec final
. En d'autres termes, il s'agit de ** l'injection de constructeur **.
(2) Appelez ʻUsersMapper` et recevez les données obtenues de la base de données sous forme de liste d'entités.
(3). Le processus de remplissage de la liste reçue dans (2) dans la liste de la classe «SampleResponse» est en cours.
(4) La valeur @ de Lombok génère automatiquement un constructeur et un getter qui initialise tous les champs.
(5) Afin de simplifier la description du processus en (3), le processus de remplissage de l'entité vers la réponse est coupé.
Ensuite, créons des classes et des interfaces liées à la connexion DB.
java:com.example.sampleapi.mapper.UsersMapper.java
@Mapper // (1)
@Component
public interface UsersMapper {
List<UsersEntity> findUserList(); // (2)
}
java:com.example.sampleapi.mapper.entity.UsersEntity.java
@Data // (3)
public class UsersEntity {
private Integer userId;
private String userName;
}
Encore une brève explication.
(1). Ajoutez @ Mapper
qui est une annotation de MyBatis. Cela reconnaît que cette classe est un mappeur associé à XML.
(2) Déclarez la méthode que vous souhaitez implémenter. ** Le nom de la méthode est mappé à l'attribut XML id décrit ci-dessous et le SQL correspondant est exécuté **.
(3) Il s'agit de l'annotation «@ Data» fournie par Lombok. Cela générera automatiquement des setters et des getters pour tous les champs.
Essayez-le jusqu'à présent ** "Le nom de colonne de la table est-il un cas de serpent, mais le champ de l'entité peut-il être mappé dans le cas de chameau?" ** Je pensais que tu. Il y a quelques paramètres supplémentaires, veuillez donc procéder tel quel. Enfin, créez un fichier XML, mettez des paramètres simples dans application.yml, et vous avez terminé.
xml:resources.mapper.Users.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.sampleapi.mapper.UsersMapper"> <!-- (1) -->
<select id="findUserList" resultType="com.example.sampleapi.mapper.entity.UsersEntity"> <!-- (2) -->
SELECT
USER_ID,
USER_NAME
FROM
USERS
</select>
</mapper>
yml:resources.application.yml
spring: #Ceci n'a pas d'importance cette fois car il définit uniquement les informations de connexion à la base de données
datasource:
url: jdbc:mysql://localhost/sample_db
username: root
password: dummy
mybatis:
mapperLocations: classpath*:/mapper/*.xml # (3)
configuration:
mapUnderscoreToCamelCase: true # (4)
La dernière brève explication.
(1). Spécifiez le chemin de la classe à laquelle @ Mapper
est donné dans l'attribut namespace
. Cela vous permet de savoir à quelle interface Java ce fichier XML est mappé.
(2) Pour mapper avec ʻUsersMapper.findUserList () mentionné ci-dessus, décrivez
findUserList dans l'attribut ʻid
. De plus, comme il est nécessaire de spécifier la valeur de retour, écrivez le chemin de la classe ʻUsersEntity dans l'attribut
resultType. (3). Si vous voulez configurer l'interface Mapper et le fichier XML pour qu'il existe dans différents packages comme cette fois, vous pouvez spécifier
mapperLocations` pour lire correctement XML.
(4) C'est une fonction pratique qui mappe automatiquement le nom de la colonne du cas du serpent mentionné ci-dessus et le champ de l'entité écrit dans le cas du chameau **. La valeur par défaut est «false», alors définissons-la sur «true».
Il existe de nombreux autres éléments de réglage utiles. Veuillez vous référer à MyBatis Official.
Vous l'avez créé! !! Après cela, envoyons une requête à l'API et voyons si nous pouvons obtenir la valeur de la base de données! !!
Utilisez le client REST Postman (https://chrome.google.com/webstore/detail/tabbed-postman-rest-clien/coohjcphdfgbiolnekdpbcijmhambjff/related) pour envoyer votre demande. Bien sûr, vous pouvez utiliser curl ou d'autres outils.
Maintenant, commençons l'API. Sélectionnez la tâche Gradle ** bootRun ** depuis IntelliJ pour la lancer.
Spécifiez l'URL (http: // localhost: 8080 / get / sample), confirmez qu'il s'agit d'une méthode GET et cliquez sur ** Envoyer **.
Vous pouvez confirmer que la valeur a été obtenue en toute sécurité!
** Vous pouvez désormais utiliser la DB à tout moment! !! ** **
** J'ai l'impression que "Si vous avez un environnement, vous pouvez le créer facilement!" **.
** MyBatis aime personnellement le fait que SQL puisse être écrit et que le mappage avec java soit facile à comprendre **. Il semble que vous n'aimiez pas l'endroit où vous devez écrire du XML et l'endroit où il n'y a pas de fonction de génération automatique comme JPA. ..
Comme pour tout, je pense que c'est facile une fois qu'on s'y habitue!
Recommended Posts