Je veux essayer la génération automatique de DB Mapper et Entity dans le développement Java. ⇒ Utilisons Mybatis Generator! C'est.
Un interpréteur qui convertit et échange des données entre les programmes Java et les bases de données. (Un type de mappeur objet-relationnel (O / RM)) Donc, ce que je veux faire cette fois, c'est la fonction "Generate" (= génération automatique d'objets Java et Mapper).
La politique est d'ajouter My Batis au-dessus de Spring Boot & Gradle. Si vous êtes de la construction de l'environnement, veuillez vous référer à ce qui suit. ⇒ Introduction à Spring Boot ... C'est bien, alors j'en suis sûr!
environnement | un service/version |
---|---|
Environnement d'exécution | Windows10 |
Environnement de développement | eclipse Oxygen.2 Release (4.7.2)Version Java |
langage de développement | Java 8 |
DB | PostgreSQL 10 |
Framework | SpringBoot 2.1.3 |
Dépendances | PostgreSQL、Thymeleaf、Web |
Obtenez-le sur le marché dans eclipse → "Aide".
Ajoutez mybatis-spring-boot-starter à Gradle. Effectuez ensuite une actualisation de Gralde pour mettre à jour les dépendances.
build.gralde
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.lab.app.ketman'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
//Postscript
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0'
//Jusque là
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Faites une table d'essai de manière appropriée.
CREATE TABLE orange.songs
(
title character varying(30) NOT NULL,
release_date date,
sales integer,
winning_flag boolean,
song_id character(4) NOT NULL,
CONSTRAINT song_id PRIMARY KEY (song_id)
)
WITH (
OIDS = FALSE
);
ALTER TABLE orange.songs
OWNER to postgres;
Créez un fichier xml qui définit la table à générer automatiquement et l'emplacement de stockage du produit. Stocker dans le répertoire sous src / main / resources.
generationConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="PostgresTables" targetRuntime="MyBatis3">
<!--Paramètres de connexion à la base de données pour l'acquisition des informations de schéma-->
<jdbcConnection driverClass="org.postgresql.Driver"
connectionURL="jdbc:postgresql://localhost:5432/* Nom du schéma *"
userId="* Identifiant d'utilisateur *"
password="※mot de passe※">
</jdbcConnection>
<!--Paramètres pour générer un modèle de domaine qui stocke les résultats SELECT, etc.-->
<javaModelGenerator targetPackage="com.lab.app.ketman.mybatis.domain" targetProject="※Nom du projet※/src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--Paramètres pour générer du XML avec des paramètres SQL-->
<sqlMapGenerator targetPackage="com/lab/app/ketman/mybatis" targetProject="※Nom du projet※/src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--Paramètres pour générer une classe de mappeur-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.lab.app.ketman.mybatis.mapper" targetProject="※Nom du projet※/src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--Spécifiez la table pour générer le code-->
<table schema="orange" tableName="songs">
<property name="useActualColumnNames" value="true" />
</table>
</context>
</generatorConfiguration>
"Exécuter" -> "Exécuter la configuration" -> "Mon générateur Batis" Sélectionnez generatorConfig.xml dans le fichier de configuration et exécutez-le. Les fichiers suivants doivent être créés dans le répertoire spécifié dans generationConfig.xml.
Insérez-le correctement.
INSERT INTO orange.songs(
title, release_date, sales, winning_flag, song_id)
VALUES ('Kirikirimai', '2003-06-04', 20206, false, '0001');
COMMIT;
Cette fois, il est supposé fonctionner sur Spring Boot, donc Ajoutez l'annotation "@Mapper" à la classe Mapper générée.
SongsMapper.java
@Mapper
public interface SongsMapper {
Appelez le mappeur depuis le contrôleur.
SampleController.java
package com.lab.app.ketman.controller;
//importation omise
@Controller
//Doit spécifier le chemin où la classe Mapper est stockée
@MapperScan(basePackages = { "com.lab.app.ketman.mybatis.mapper.*"})
public class SampleController {
@Autowired
SongsMapper sm;
@RequestMapping("/index")
public String index(Model model) {
Songs s = sm.selectByPrimaryKey("0001"); //Stocker les résultats de la recherche dans l'objet Chansons
model.addAttribute("title", s.getTitle()); //Obtenez la valeur avec getter
return "index";
}
}
Obtenez l'attribut à valeur ajoutée du côté HTML. (Depuis ce temps, il est supposé fonctionner sur Spring Boot, J'utilise le Thymeleaf recommandé. )
index.html
<h1 th:text="${title}"></h1>
J'ai pu le sortir en toute sécurité.
Au début, le lien entre SongsMapper.xml et SongsMapper.java ne fonctionnait pas, Instruction liée non valide (non trouvée) J'ai renvoyé une erreur. Cette fois, il a été résolu en faisant correspondre les chemins sur les côtés xml et java.
Cité ci-dessous: Spring Boot + Mybatis mapper-locations
Dans Spring Boot + Mybatis, si les chemins d'accès aux classes Mapper XML et Mapper sont identiques, Mybatis lira Mapper XML sans les spécifications ci-dessus. Mapper XML et la classe Mapper ont le même chemin "l'image ressemble à ceci: ・ Src / main / java / jp / co / arsware / exemple / mapper / CityMapper.java ・ Src / main / resources / jp / co / arsware / example / mapper / CityMapper.xml
- Si le chemin sous co est le même, il sera lu.
Cependant, même si mapper-locations est défini dans application.properties, il n'est pas résolu ... Ce point est inconnu.
Vous devez également faire attention à la configuration des packages tels que Controller. Cet article était facile à lire. Causes et contre-mesures lorsqu'aucun bean éligible de type n'apparaît dans Spring Boot
Dans cet article, nous avons traité de la confirmation de fonctionnement à l'aide de Mybatis Generator. En maintenant XML et Example.java, je pense que nous pouvons gérer les jointures et le SQL dynamique.