Utilisation de Mybatis (méthode d'interface mapper)

赶牛上岸
Libérer: 2023-03-20 20:24:02
original
6973 Les gens l'ont consulté

En utilisant l'interface Mapper, vous n'avez pas besoin d'écrire une classe d'implémentation d'interface et vous pouvez directement terminer l'opération de base de données, ce qui est simple et pratique. Afin d'aider tout le monde à mieux apprendre l'interface Mapper, l'éditeur a résumé quelques points de connaissances sur l'interface Mapper, dans l'espoir d'aider ceux qui en ont besoin.

Allez d'abord au diagramme de structure :
Utilisation de Mybatis (méthode dinterface mapper)
Voici le code spécifique :
1.User.java

实体类中的的get/set方法以及构造方法及toString方法就不贴了
public class User {    
    private int id;    
    private String name;    
    private int age;
}
Copier après la connexion

2. UserMapper.java
C'est l'interface du mappeur, et l'idée de programmation orientée interface est toujours très importante. C’est aussi la partie la plus importante de ce billet de blog.

La définition de l'interface a les caractéristiques suivantes :

  1. Le nom de la méthode de l'interface Mapper a le même nom que l'identifiant de chaque sql défini dans UserMapper .xml.

  2. Le type de paramètre d'entrée de la méthode d'interface Mapper est le même que le type paramètreType de SQL défini dans UserMapper.xml.

  3. Le type de retour de l'interface Mapper est le même que le resultType de SQL défini dans UserMapper.xml

Faites attention à la méthode de création du tableau, Il y a l'annotation @Param

package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper {
    void createTable (@Param("tableName") String tableName);    void add(User user);    void del(int id);    void update(User user);
    User getUser(int id);
    User[] list();
}
Copier après la connexion
Copier après la connexion

3. userMappers.xml
Il faut le noter ici
L'espace de noms du fichier 1.xml doit être écrit comme suit.

<mapper namespace="com.mi.mapper.UserMapper">
Copier après la connexion
Copier après la connexion

2 Lors de l'écriture de l'instruction pour créer dynamiquement une table, écrivez ${tableName} au lieu de. #{}. Cliquez pour voir la différence entre les deux

create table ${tableName}...
Copier après la connexion

Ce qui suit est le code complet : y compris la création de table, CRUD

<mapper namespace="com.mi.mapper.UserMapper">
    
    
        create table ${tableName} (id int primary key auto_increment,name varchar(20),age int)    
    
    
        insert into t_user(name,age) value(#{name},#{age})    
    
    
        delete from t_user where id = #{id}    
    
    
        update t_user set name=#{name},age=#{age} where id=#{id}    
    
    
    
    
Copier après la connexion

4.
Deux choses doivent être configurées ici

  • Configurer la connexion JDBC

  • Configurer mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
        <!-- 注册userMapper.xml文件 -->
    <mappers>
        <mapper resource="com/mi/mapping/userMappers.xml"/>
    </mappers></configuration>
Copier après la connexion

5. SqlSessionUtil.java
J'ai écrit une classe d'outils ici, le but principal est d'obtenir sqlSession, car chaque fois que j'utilise la base de données, je dois écrire encore une fois, donc je l'encapsule une fois.

package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.
session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil 
{
      public static SqlSession getSqlSession() throws Exception{
      String resource = "conf.xml";
      //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
      InputStream is = Resources.getResourceAsStream(resource);
      //构建sqlSession的工厂
      SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
      //创建能执行映射文件中sql的sqlSession
      SqlSession sqlSession = sessionFactory.openSession();
      return sqlSession;
   }
}
Copier après la connexion

6 MyTest.java
C'est la classe de test, via la classe d'outils ci-dessus sqlSession, la chose la plus importante est. la phrase suivante

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Copier après la connexion
Copier après la connexion

MyBatis est implémenté via une interface de mappeur de proxy dynamique , il sera facile à gérer après cela, il suffit d'exécuter les méthodes préparées dans l'interface.
Attention à ne pas oublier sqlSession.commit() et sqlSession.close() Sinon, même si aucune erreur ne sera signalée lors de l'exécution, il n'y aura aucun changement dans la base de données.

<. 🎜 >
这里我只执行了创建表的方法.
package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper;
import com.mi.util.SqlSessionUtil;public class MyTest {
    public static void main(String[] args) throws Exception {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.createTable("t_user");
        sqlSession.commit();
        sqlSession.close();
    }
}
Copier après la connexion
Copier après la connexion

La méthode d'utilisation de l'interface Mapper, sans écrire l'interface pour implémenter la classe, complète directement l'opération de la base de données, simple et pratique.

D'abord le schéma de structure :

Utilisation de Mybatis (méthode dinterface mapper)Ce qui suit est le code spécifique :

1.User.java

实体类中的的get/set方法以及构造方法及toString方法就不贴了public class User {    private int id;    private String name;    private int age;
Copier après la connexion

2 , UserMapper.java C'est l'interface du mappeur, et l'idée de programmation orientée interface est toujours très importante. C’est aussi la partie la plus importante de ce billet de blog.

La définition de l'interface a les caractéristiques suivantes :

  1. Le nom de la méthode de l'interface Mapper a le même nom que l'identifiant de chaque sql défini dans UserMapper .xml.

  2. Le type de paramètre d'entrée de la méthode d'interface Mapper est le même que le type paramètreType de SQL défini dans UserMapper.xml.

  3. Le type de retour de l'interface Mapper est le même que le resultType de SQL défini dans UserMapper.xml

Faites attention à la méthode de création du tableau, Il y a l'annotation @Param

package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper {
    void createTable (@Param("tableName") String tableName);    void add(User user);    void del(int id);    void update(User user);
    User getUser(int id);
    User[] list();
}
Copier après la connexion
Copier après la connexion

3. userMappers.xml
Il faut le noter ici L'espace de noms du fichier 1.xml doit être écrit comme Le chemin de l'interface du mappeur est le suivant

<mapper namespace="com.mi.mapper.UserMapper">
Copier après la connexion
Copier après la connexion
2 Lors de l'écriture de l'instruction pour créer dynamiquement une table, écrivez ${tableName} au lieu de. #{}. Cliquez pour voir la différence entre les deux

create table ${tableName}...
Copier après la connexion
Ce qui suit est le code complet : y compris la création de table, CRUD

<mapper namespace="com.mi.mapper.UserMapper">
    
    
        create table ${tableName} (id int primary key auto_increment,name varchar(20),age int)    
    
    
    
        insert into t_user(name,age) value(#{name},#{age})    
    
    
    
        delete from t_user where id = #{id}
     
    
    
        update t_user set name=#{name},age=#{age} where id=#{id}    
    
    
    
    
    
Copier après la connexion

4. Deux choses doivent être configurées ici

  • Configurer la connexion JDBC

  • Configurer mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
        <!-- 注册userMapper.xml文件      -->
    <mappers>
        <mapper resource="com/mi/mapping/userMappers.xml"/>
    </mappers></configuration>
Copier après la connexion

5. SqlSessionUtil.java J'ai écrit une classe d'outils ici, le but principal est d'obtenir sqlSession, car chaque fois que j'utilise la base de données, je dois écrire encore une fois, donc je l'encapsule une fois.

package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil 
{
      public static SqlSession getSqlSession() throws Exception{
        String resource = "conf.xml";
         //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = Resources.getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
      //创建能执行映射文件中sql的sqlSession
        SqlSession sqlSession = sessionFactory.openSession();
        return sqlSession;
    }
}
Copier après la connexion

6 MyTest.java C'est la classe de test, via la classe d'outils ci-dessus sqlSession, la chose la plus importante est. la phrase suivante

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Copier après la connexion
Copier après la connexion

MyBatis est implémenté via une interface de mappeur de proxy dynamique , il sera facile à gérer après cela, il suffit d'exécuter les méthodes préparées dans l'interface.
Attention à ne pas oublier sqlSession.commit() et sqlSession.close() Sinon, même si aucune erreur ne sera signalée lors de l'exécution, il n'y aura aucun changement dans la base de données.<. 🎜 >

Recommandations associées :
这里我只执行了创建表的方法.
package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper;
import com.mi.util.SqlSessionUtil;public class MyTest {
    public static void main(String[] args) throws Exception {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.createTable("t_user");
        sqlSession.commit();
        sqlSession.close();
    }
}
Copier après la connexion
Copier après la connexion

Explication détaillée de l'exemple d'aide du plug-in de pagination mybatis

Oracle combine Mybatis pour implémenter 10 éléments de données de la table

Spring Boot, Mybatis, Redis créent rapidement des projets Web modernes


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!