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

Verwendung von Mybatis (Mapper-Schnittstellenmethode)

赶牛上岸
赶牛上岸Original
2018-03-06 16:15:006994Durchsuche

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;
}

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();
}

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

<mapper namespace="com.mi.mapper.UserMapper">

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}...

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}    
    
    
    
    

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>

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;
   }
}

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);


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();
    }
}

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;

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();
}

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">

4
create table ${tableName}...

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}    
    
    
    
    
    

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>

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;
    }
}

Verwandte Empfehlungen:

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
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!

Stellungnahme:
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