1. 마이바티스 소개
MyBatis는 사용자 정의 SQL, 저장 프로시저 및 고급 매핑을 지원하는 최고 수준의 지속성 프레임워크입니다. MyBatis는 거의 모든 JDBC 코드를 제거하며 기본적으로 매개변수를 수동으로 설정하고 검색 결과를 얻을 필요가 없습니다. MyBatis는 간단한 XML 형식이나 주석을 사용하여 구성할 수 있으며 기본 데이터 요소, Map 인터페이스 및 POJO(일반 Java 개체)를 데이터베이스의 레코드에 매핑할 수 있습니다.
2. 마이바티스 워크플로우
(1) 구성 로드 및 초기화
트리거 조건: 구성 파일 로드
구성은 두 위치에서 이루어집니다. 하나는 구성 파일이고 다른 하나는 Java 코드의 주석입니다. SQL 구성 정보는 MappedStatement 객체(수신 매개변수 매핑 구성, 실행된 SQL 문 및 결과 포함)에 로드됩니다. . 매핑 구성), 메모리에 저장됩니다.
(2) 전화요청 받기
발동조건: 마이바티스에서 제공하는 API 호출
수신 매개변수: SQL ID 및 수신 매개변수 객체
처리 프로세스: 처리를 위해 요청을 하위 요청 처리 계층으로 전달합니다.
(3) 작업 요청을 처리합니다. 트리거 조건: API 인터페이스 계층이 요청을 통과합니다.
수신 매개변수: SQL ID 및 수신 매개변수 객체
처리과정:
(A) SQL ID를 기반으로 해당 MappedStatement 개체를 찾습니다.
(B) 들어오는 매개변수 개체에 따라 MappedStatement 개체를 구문 분석하여 실행할 최종 SQL과 실행 들어오는 매개변수를 얻습니다.
(다) 데이터베이스 연결을 획득하고, 최종 SQL 문과 실행 매개변수를 데이터베이스에 전달하여 실행하고, 실행 결과를 얻는다.
(D) 결과 매핑 구성에 따라 얻은 실행 결과를 MappedStatement 객체로 변환하여 최종 처리 결과를 얻는다.
(E) 연결 자원을 해제합니다.
(4) 처리 결과를 반환하고 최종 처리 결과를 반환
ORM 도구의 기본 아이디어
hibernate를 사용했든 mybatis를 사용했든 한 가지 공통점을 비교할 수 있습니다.
기능적 아키텍처
Mybatis의 기능적 아키텍처는 세 가지 계층으로 나뉩니다.
1. API 인터페이스 계층: 외부 사용을 위해 제공되는 인터페이스 API입니다. 개발자는 이러한 로컬 API를 사용하여 데이터베이스를 조작합니다. 인터페이스 계층이 호출 요청을 받으면 데이터 처리 계층을 호출하여 특정 데이터 처리를 완료합니다.
2. 데이터 처리 계층: 특정 SQL 검색, SQL 파싱, SQL 실행 및 실행 결과 매핑 처리 등을 담당합니다. 주요 목적은 호출 요청에 따라 데이터베이스 작업을 완료하는 것입니다.
3. 기본 지원 레이어: 연결 관리, 트랜잭션 관리, 구성 로딩, 캐시 처리 등 가장 기본적인 기능 지원을 담당하며, 가장 기본적인 구성 요소로 추출됩니다. 상위 데이터 처리 계층에 대한 가장 기본적인 지원을 제공합니다.
더 많은 드라이버 패키지를 추가해야 합니다.
빠른 시작 방법은 다음과 같습니다.
디렉토리는 다음과 같습니다.
엔티티 클래스 사용자
package com.oumyye.model; public class User { private String id; private String name; private int age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
매핑 파일 UserMapping.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.oumyye.mapping.UserMapping"> <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 resultType="com.oumyye.model.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 --> <!-- 根据id查询得到一个user对象 --> <select id="getUser" parameterType="String" resultType="com.oumyye.model.User"> select * from user where id=#{id} </select> </mapper>
리소스 파일 mybatis.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> <mappers> <mapper resource="com/oumyye/mapping/userMapping.xml"/> </mappers> </configuration>
테스트 클래스:
package test; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.oumyye.model.User; public class Tests { @Test public void test(){ String resource = "mybatis.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); /** * 映射sql的标识字符串, * com.oumyye.mapping.UserMapping是userMapper.xml文件中mapper标签的namespace属性的值, * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL */ String statement = "com.oumyye.mapping.UserMapping.getUser";//映射sql的标识字符串 //执行查询返回一个唯一user对象的sql User user = session.selectOne(statement, "1123"); System.out.println(user.toString()); } }
결과:
위 내용은 Java Mybatis 프레임워크를 시작하는 데 필요한 기본 튜토리얼입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.