Java Mybatis Framework 시작을 위한 기본 튜토리얼_기본 지식
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를 사용했든 한 가지 공통점을 비교할 수 있습니다.
- sessionfactory. 를 구성 파일(일반적으로 XML 구성 파일)에서 가져옵니다.
- sessionfactory에서 생성된 세션
- 세션 내 데이터 추가, 삭제, 수정, 트랜잭션 제출을 완료합니다.
- 사용 후 세션을 종료하세요.
- Java 객체와 데이터베이스 사이에는 일반적으로 xml 파일인 매핑 구성 파일이 있습니다.
기능적 아키텍처
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 프레임워크를 시작하는 데 필요한 기본 튜토리얼입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4

Java는 초보자와 숙련된 개발자 모두가 배울 수 있는 인기 있는 프로그래밍 언어입니다. 이 튜토리얼은 기본 개념부터 시작하여 고급 주제를 통해 진행됩니다. Java Development Kit를 설치한 후 간단한 "Hello, World!" 프로그램을 작성하여 프로그래밍을 연습할 수 있습니다. 코드를 이해한 후 명령 프롬프트를 사용하여 프로그램을 컴파일하고 실행하면 "Hello, World!"가 콘솔에 출력됩니다. Java를 배우면 프로그래밍 여정이 시작되고, 숙달이 깊어짐에 따라 더 복잡한 애플리케이션을 만들 수 있습니다.
