my batis 간단 resultMap 사용 상세 설명
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 태그 의 설명:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.