my batis 간단 resultMap 사용 상세 설명

Mybatis 의 소개 및 사용:http://www.mybatis.org/mybatis-3/zh/index.html
my batis 는 반자동 ORM(Object Relational Mapping)프레임 워 크 로 SQL 문 구 를 수 동 으로 설정 하거나 주 해 를 해 야 합 니 다.상대 적 으로 Mybatis 는 프로그래머 에 게 작업 할 수 있 는 공간 유연성 이 높 고 보통 수 동 으로 설정 하여 OR 맵 을 완성 해 야 합 니 다.데이터베이스 시트 의 필드 가 POJO 실체 류 와 일치 하지 않 을 때 프로그래머 가 수 동 으로 필드 의 맵 을 완성 해 야 합 니 다.
mybatis-config.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>

    <properties resource="db.properties"/>

    <settings>			<!--            -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

    <typeAliases>		<!--      -->
        <typeAlias type="com.pojo.User" alias="user"/>
    </typeAliases>

    <environments default="development">

        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        
    </environments>
    <mappers>
        <mapper resource="com/dao/UserMapper.xml"/>
    </mappers>
</configuration>
mybatisUtil 로드 도구 클래스

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class mybatisUtil {
    private static SqlSessionFactory sqlSessionFactory = null;
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlsession(){
        return sqlSessionFactory.openSession();
    }
}
POJO 실체 류 User 는 Lombok 주 해 를 간단하게 사용 하기 위해 코드 를 줄 입 니 다.
在这里插入图片描述

package com.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data                           //  get / set    Tostring...
@AllArgsConstructor             //    
@NoArgsConstructor              //    
public class User {
    private int id;						//       id
    private String username;			//       name
    private String password;			//       pwd
}
인터페이스 방법 과 대응 하 는 xml 프로필

package com.dao;

import com.pojo.User;
import java.util.List;

public interface UserMapper {
    List<User> getUserList();
}
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.dao.UserMapper">

	<select id="getUserList" resultType="user">
	    select *from user;
	</select>
	
</mapper>
1.POJO 실체 클래스 와 데이터 시트 필드 가 일치 하지 않 음

@Test
public void test1(){
    SqlSession session = mybatisUtil.getSqlsession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    List<User> list = mapper.getUserList();
    for (User user : list) {
        System.out.println(user.toString());
    }
    session.close();
}
POJO 실체 클래스 에는 데이터베이스 필드 와 일치 하지 않 는 필드 가 두 개 있 습 니 다.마지막 으로 결 과 를 얻 을 때 일치 하지 않 는 속성 에 null 빈 값 이 발생 합 니 다.출력 로 그 를 사용 하여 도움 을 주면 차이 점 을 쉽게 볼 수 있 습 니 다.
在这里插入图片描述
간단 한 해결 방안:SQL 문 구 를 조회 할 때 검색 필드 에 이름 을 바 꾸 는 것 입 니 다.

select id, name as username, pwd as password from user
在这里插入图片描述
2.resultMap 해결 속성-필드 일치 하지 않 는 문제
위의 이런 해결 방안 은 문 제 를 해결 할 수 있 지만 좀 지루 하 다 는 것 자체 가 모든 정 보 를 찾 아서 사용 해 야 한다.이렇게 바 꾸 려 면 모든 필드 를 열거 한 후에 극히 다른 필드 에 대해 별명 을 지어 야 한다.데이터 시트 에 몇 십 개의 필드 가 있 을 까?진짜 별명 을 지어 야 하 는 필드 가 1 개 밖 에 없어 요.-2 개 는 요?그래서 my batis 는 강력 한 메커니즘 resultMap 결과 집합 맵 을 제공 하여 이 문 제 를 해결 합 니 다.

<?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.dao.UserMapper">
	
	<!--
		  1. id          ,  resultMap       ,               。
		  2. type       
   -->
    <resultMap id="FieldMap" type="user">
    	<!--   column            property          -->
        <result column="name" property="username"/>
        <result column="pwd"  property="password"/>
    </resultMap>
    <select id="getUserList" resultMap="FieldMap">
        select *from user
    </select>

</mapper>
在这里插入图片描述
resultMap 태그 의 설명:
  • id 는 정의 방법의 이름 이 라 고 볼 수 있 습 니 다.아래 selection 의 resultMap 이 id 에 들 어 오 는 값 은 이 방법 으로 맵 을 완성 하 는 것 과 같 습 니 다
  • type 은 실체 유형 명
  • column 대응 데이터베이스 의 필드
  • property 는 실체 류 의 속성 이다
  • my batis 에 관 한 간단 한 resultMap 사용 에 관 한 상세 한 설명 은 여기까지 입 니 다.더 많은 my batis resultMap 사용 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기