Heim > Backend-Entwicklung > PHP-Tutorial > Verwendung von Mybatis (Mapper-Schnittstellenmethode)

Verwendung von Mybatis (Mapper-Schnittstellenmethode)

赶牛上岸
Freigeben: 2023-03-20 20:24:02
Original
7034 Leute haben es durchsucht

Mit der Mapper-Schnittstelle müssen Sie keine Schnittstellenimplementierungsklasse schreiben und können den Datenbankvorgang direkt abschließen, was einfach und bequem ist. Um allen dabei zu helfen, die Mapper-Schnittstelle besser zu erlernen, hat der Herausgeber einige Wissenspunkte über die Mapper-Schnittstelle zusammengefasst, in der Hoffnung, Bedürftigen zu helfen.

Zuerst das Strukturdiagramm:
Verwendung von Mybatis (Mapper-Schnittstellenmethode)
Das Folgende ist der spezifische Code:
1. User.java

实体类中的的get/set方法以及构造方法及toString方法就不贴了
public class User {    
    private int id;    
    private String name;    
    private int age;
}
Nach dem Login kopieren

2. UserMapper.java
Dies ist die Mapper-Schnittstelle, und die Idee der schnittstellenorientierten Programmierung ist immer noch sehr wichtig. Dies ist auch der wichtigste Teil dieses Blogbeitrags.

Die Schnittstellendefinition weist die folgenden Merkmale auf:

  1. Der Name der Mapper-Schnittstellenmethode hat denselben Namen wie die ID jedes in UserMapper definierten SQL .xml.

  2. Der Eingabeparametertyp der Mapper-Schnittstellenmethode ist derselbe wie der in UserMapper.xml definierte ParameterType-Typ von SQL.

  3. Der Rückgabetyp der Mapper-Schnittstelle ist derselbe wie der in UserMapper.xml definierte Ergebnistyp von SQL

Achten Sie darauf Die Methode zum Erstellen der Tabelle. Es gibt eine Anmerkung @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();
}
Nach dem Login kopieren
Nach dem Login kopieren

3. userMappers.xml
Es muss hier notiert werden
1.xml-Dateinamespace sollte wie folgt geschrieben werden:

<mapper namespace="com.mi.mapper.UserMapper">
Nach dem Login kopieren
Nach dem Login kopieren

2 Wenn Sie die Anweisung zum dynamischen Erstellen einer Tabelle schreiben, schreiben Sie stattdessen ${tableName} #{}. Klicken Sie, um den Unterschied zwischen den beiden zu sehen

create table ${tableName}...
Nach dem Login kopieren

Das Folgende ist der vollständige Code: einschließlich Tabellenerstellung, 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}    
    
    
    
    
Nach dem Login kopieren

4
Hier müssen zwei Dinge konfiguriert werden

  • JDBC-Verbindung konfigurieren

  • Mapper.xml konfigurieren

<?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>
Nach dem Login kopieren

5. SqlSessionUtil.java
Ich habe hier eine Toolklasse geschrieben, deren Hauptzweck darin besteht, sqlSession zu erhalten, da ich jedes Mal schreiben muss, wenn ich die Datenbank betreibe Es ist noch einmal, also kapsele ich es einmal Der folgende Satz

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;
   }
}
Nach dem Login kopieren

MyBatis wird über die dynamische Proxy-Mapper-Schnittstelle implementiert , danach ist es einfach zu handhaben, führen Sie einfach die in der Schnittstelle vorbereiteten Methoden aus.

Achten Sie darauf, sqlSession.commit() und sqlSession.close() nicht zu vergessen, obwohl während der Ausführung kein Fehler gemeldet wird, gibt es keine Änderungen in der Datenbank.
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Nach dem Login kopieren
Nach dem Login kopieren


Die Methode zur Verwendung der Mapper-Schnittstelle, ohne die Schnittstelle zum Implementieren der Klasse zu schreiben, schließt den Datenbankvorgang direkt ab, einfach und bequem. Beginnen wir mit dem Strukturdiagramm:

这里我只执行了创建表的方法.
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();
    }
}
Nach dem Login kopieren

Das Folgende ist der spezifische Code:

1. User.java

Verwendung von Mybatis (Mapper-Schnittstellenmethode)

2 , UserMapper.java Dies ist die Mapper-Schnittstelle, und die Idee der schnittstellenorientierten Programmierung ist immer noch sehr wichtig. Dies ist auch der wichtigste Teil dieses Blogbeitrags.

实体类中的的get/set方法以及构造方法及toString方法就不贴了public class User {    private int id;    private String name;    private int age;
Nach dem Login kopieren

Die Schnittstellendefinition weist die folgenden Merkmale auf:

Der Name der Mapper-Schnittstellenmethode hat denselben Namen wie die ID jedes in UserMapper definierten SQL .xml.

    Der Eingabeparametertyp der Mapper-Schnittstellenmethode ist derselbe wie der in UserMapper.xml definierte ParameterType-Typ von SQL.
  1. Der Rückgabetyp der Mapper-Schnittstelle ist derselbe wie der resultType von SQL, der in UserMapper.xml definiert ist
  2. Achten Sie darauf Die Methode zum Erstellen der Tabelle. Es gibt eine Anmerkung @Param

3. userMappers.xml

Es muss hier notiert werden
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();
}
Nach dem Login kopieren
Nach dem Login kopieren

1.xml-Dateinamespace sollte wie folgt geschrieben werden:
2 Wenn Sie die Anweisung zum dynamischen Erstellen einer Tabelle schreiben, schreiben Sie stattdessen ${tableName} #{}. Klicken Sie, um den Unterschied zwischen den beiden zu sehen
Das Folgende ist der vollständige Code: einschließlich Tabellenerstellung, CRUD

<mapper namespace="com.mi.mapper.UserMapper">
Nach dem Login kopieren
Nach dem Login kopieren

4
create table ${tableName}...
Nach dem Login kopieren

Hier müssen zwei Dinge konfiguriert werden

<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}    
    
    
    
    
    
Nach dem Login kopieren

JDBC-Verbindung konfigurieren

    Mapper.xml konfigurieren
  • 5. SqlSessionUtil.java

  • Ich habe hier eine Toolklasse geschrieben, deren Hauptzweck darin besteht, sqlSession zu erhalten, da ich jedes Mal schreiben muss, wenn ich die Datenbank betreibe Es ist noch einmal, also kapsele ich es einmal Der folgende Satz
<?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>
Nach dem Login kopieren

MyBatis wird über die dynamische Proxy-Mapper-Schnittstelle implementiert , danach ist es einfach zu handhaben, führen Sie einfach die in der Schnittstelle vorbereiteten Methoden aus.

Achten Sie darauf, sqlSession.commit() und sqlSession.close() nicht zu vergessen, obwohl während der Ausführung kein Fehler gemeldet wird, gibt es keine Änderungen in der Datenbank.
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;
    }
}
Nach dem Login kopieren

Verwandte Empfehlungen:

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Nach dem Login kopieren
Nach dem Login kopieren
Detaillierte Erläuterung des Beispiels für das Mybatis-Paging-Plug-in pageHelper


Oracle kombiniert Mybatis, um 10 Daten aus zu implementieren der Tisch

Spring Boot, Mybatis, Redis erstellen schnell moderne Webprojekte


Das obige ist der detaillierte Inhalt vonVerwendung von Mybatis (Mapper-Schnittstellenmethode). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage