>백엔드 개발 >PHP 튜토리얼 >Mybatis(매퍼 인터페이스 방식) 사용

Mybatis(매퍼 인터페이스 방식) 사용

赶牛上岸
赶牛上岸원래의
2018-03-06 16:15:007034검색

Mapper 인터페이스를 사용하면 인터페이스 구현 클래스를 작성할 필요가 없으며 데이터베이스 작업을 직접 완료할 수 있어 간단하고 편리합니다. 모든 사람이 Mapper 인터페이스를 더 잘 배울 수 있도록 편집자는 도움이 필요한 사람들에게 도움이 되기를 바라며 Mapper 인터페이스에 대한 몇 가지 지식 포인트를 요약했습니다.

구조 다이어그램부터 시작해 보겠습니다.
Mybatis(매퍼 인터페이스 방식) 사용
다음은 구체적인 코드입니다.
1. User.java

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

2 이것은 매퍼 인터페이스입니다. 인터페이스 지향 프로그래밍은 여전히 ​​매우 중요합니다. 이번 블로그 포스팅에서 가장 중요한 부분이기도 합니다.

인터페이스 정의는 다음과 같은 특징을 가지고 있습니다.

  1. Mapper 인터페이스 메소드 이름은 UserMapper.xml에 정의된 각 SQL의 ID와 동일한 이름을 갖습니다.

  2. Mapper 인터페이스 메소드의 입력 매개변수 유형은 UserMapper.xml에 정의된 sql의 매개변수 유형 유형과 동일합니다.口Mapper 인터페이스의 반환 유형과 UserMapper.xml에 정의된 SQL 결과 유형 유형 테이블을 생성하는 방법과 동일하게 주석@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. III, UserMappers.xml

이 있습니다. 여기서 주의할 점은 that 1. . JDBC 연결

Configuring mapper.xml

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

5. SqlSessionUtil.java

여기에 도구 클래스를 작성했는데, 주요 목적은 sqlSession을 얻는 것입니다. 데이터베이스를 작동할 때마다 다시 작성해서 한번 캡슐화해보겠습니다.

create table ${tableName}...

, MyTest.java 위의 툴 클래스인 sqlSession을 통해 가장 중요한 것은 다음 문장입니다.

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

    MyBatis는 매퍼 인터페이스를 구현합니다.
  • 동적 프록시를 통해 실행 인터페이스에서 준비하면 쉽게 처리할 수 있습니다.

    sqlSession.commit() 및 sqlSession.close()를 잊지 않도록 주의하세요. 그렇지 않으면 실행 중에 오류가 보고되지 않더라도 데이터베이스에는 변경 사항이 없습니다.                                    동안 오류는 보고되지 않지만 실행 시 데이터베이스에는 변경 사항이 없으며 인터페이스 구현 클래스를 작성할 필요가 없으며 데이터베이스 작업을 직접 완료할 수 있어 간단하고 편리합니다.
  • 구조 다이어그램부터 시작해 보겠습니다.
  • 다음은 구체적인 코드입니다.
1. User.java

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

2. UserMapper.java

이것은 매퍼 인터페이스이며 인터페이스의 아이디어입니다. 지향적인 프로그래밍은 여전히 ​​매우 중요합니다. 이번 블로그 포스팅에서 가장 중요한 부분이기도 합니다.
인터페이스 정의는 다음과 같은 특징을 가지고 있습니다.


Mapper 인터페이스 메소드 이름은 UserMapper.xml에 정의된 각 SQL의 ID와 동일한 이름을 갖습니다.

Mapper 인터페이스 메소드의 입력 매개변수 유형은 UserMapper.xml에 정의된 sql의 매개변수 유형 유형과 동일합니다.口Mapper 인터페이스의 반환 유형과 UserMapper.xml에 정의된 SQL 결과 유형 유형 테이블을 생성하는 방법과 동일하게 주석@Param

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


III, UserMappers.xmlMybatis(매퍼 인터페이스 방식) 사용

이 있습니다. 여기서 주의할 점은 that

1. . JDBC 연결

Configuring mapper.xml

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    5. SqlSessionUtil.java
  1. 여기에 도구 클래스를 작성했는데, 주요 목적은 sqlSession을 얻는 것입니다. 데이터베이스를 작동할 때마다 다시 작성해서 한번 캡슐화해보겠습니다.

    这里我只执行了创建表的方法.
    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();
        }
    }
  2. , MyTest.java

    위의 툴 클래스인 sqlSession을 통해 가장 중요한 것은 다음 문장입니다.
  3. 实体类中的的get/set方法以及构造方法及toString方法就不贴了public class User {    private int id;    private String name;    private int age;
  4. MyBatis는 매퍼 인터페이스를 구현합니다.

    동적 프록시를 통해 실행 인터페이스에서 준비하면 쉽게 처리할 수 있습니다.
sqlSession.commit() 및 sqlSession.close()를 잊지 않도록 주의하세요. 그렇지 않으면 실행 중에 오류가 보고되지 않더라도 데이터베이스에는 변경 사항이 없습니다.

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();
}
관련 권장 사항:

mybatis 페이징 플러그인 페이지 헬퍼 인스턴스에 대한 자세한 설명
Oracle은 Mybatis와 결합하여 테이블에서 10개의 데이터를 구현합니다

Spring Boot, Mybatis, Redis는 최신 웹 프로젝트를 빠르게 구축합니다


위 내용은 Mybatis(매퍼 인터페이스 방식) 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.