>  기사  >  Java  >  mybatis 시작하기의 기본 사항 (4) ---- 입력 매핑 및 출력 매핑

mybatis 시작하기의 기본 사항 (4) ---- 입력 매핑 및 출력 매핑

黄舟
黄舟원래의
2016-12-21 14:31:031256검색

Mybatis 시작하기 기본 사항(4)----입력 매핑 및 출력 매핑 1: 입력 매핑

parameterType을 통해 입력 매개변수의 유형을 지정합니다. 유형은 단순 유형, hashmap 또는 pojo일 수 있습니다. 포장 유형.

1.1. 포조의 패키징 객체 전달

1.1.1. 요구 사항 설명

사용자 정보에 대한 종합 쿼리를 완료하기 위해 전달해야 하는 쿼리 조건 복잡할 수 있습니다(사용자 정보, 제품, 주문 등과 같은 기타 정보가 포함될 수 있음).

1.1.2.포장 유형 포조 정의

위 요구 사항에 대응하여 사용자 정의 포장 유형 포조를 사용하고 포장 유형 포조에 복잡한 쿼리 조건을 래핑하는 것이 좋습니다.

쿼리 조건을 래핑하는 Pojo 클래스 UserQueryVo 클래스 코드:

1 package com.mybatis.entity 2 3 /**4 * 5 * @ClassName: UserQueryVo 6 * @Description: TODO(패키지 유형) 7 * @author warcaft 8 * @date 2015-6-30 오전 12:00:41 9 *10*/11 public class UserQueryVo {12 //Here Pack 기타 쿼리 조건 13 //사용자 쿼리 조건 14 PRivate UserCustom userCustom;15 16 public UserCustom getUserCustom() {17 return userCustom;18 }19 20 public void setUserCustom(UserCustom userCustom) {21 this.userCu stom = userCustom;22 }23 / /다른 쿼리 조건도 패키징 가능... 24 25 }
코드 보기

UserCustom 클래스 코드

1 package com.mybatis.entity 2 /**3 * 4 * @ClassName: UserCustom 5 * @Description: TODO(사용자의 확장 클래스) 6 * @author warcaft 7 * @date 2015-6-30 오전 12:02:37 8 * 9*/ 10 public class UserCustom 확장 User{11 //사용자 정보 확장 가능 12}
코드 보기

UserMapper.xml 코드

UserMapper.xml에서 사용자 정의 종합 정보 쿼리(다음을 가정함) 쿼리 조건이 매우 복잡, 고급 쿼리를 통한 관련 쿼리가 복잡함)

1 5
코드 보기

코드 보기 UserMapper.java 클래스

1 /**2 * 3 * @ClassName: UserMapper 4 * @Description: TODO(사용자 관리 매퍼 인터페이스) 5 * @author warcaft 6 * @date 2015-6-30 오전 12:14:56 7 * 8*/ 9 공용 인터페이스 UserMapper {10 // 사용자 정보 종합 쿼리 11 public List findUserList(UserQueryVo userQueryVo);12 }
코드 보기

Junit 단위 테스트 코드

1개 com.mybatis.dao.test; 2  3 import java.io.InputStream; 4 import java.util.Date; 5 import java.util.List; 6  7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 가져오기 org.apache.ibatis.session.SqlSessionFactory;10 가져오기 org.apache.ibatis.session.SqlSessionFactoryBuilder;11 가져오기 org.junit.Before;12 가져오기 org.junit.Test;13 14 가져오기 com.mybatis.entity.User ;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis.mapper.UserMapper;18 19 public class UserMapperTest {20 21     private SqlSessionFactory sqlSessionFactory;22 23     // 此方法是에서findUserByIdTest 지前执行24     @Before25     public void setUp()에서 예외 발생 {26         String Resource = "SqlMapConfig.xml";27         InputStream inputStream = Resources.getResourceAsStream(resource);28         // 创建SqlSessionF catory29         sqlSessionFactory = 새로운 SqlSessionFactoryBuilder().build (inputStream);30     }31     32     @Test33     public void testFindUserList() {34         SqlSession sqlSession = sqlSessionFactory.openSession();35         //创造查询条件36        UserQueryVo userQueryVo = new UserQueryVo();37         UserCustom userCustom = new UserCustom(); 38         userCustom.setSex("2");39         userCustom.setUsername("작은");40         userQueryVo.setUserCustom(userCustom);41         // 创建Usermapper对象 ,mybatis自动生成mapper代理对象42        UserMapper 매퍼 = sqlSession.getMapper(UserMapper .class);43         Listlist=mapper.findUserList(userQueryVo);44         System.out.println(list);45         sqlSession.commit();46         sqlSession.close();47     }48 }
보기 코드이: 输流映射

1.resultType

  使用resultType进行输流映射,性只有查询来的列name 와 pojo中的属name一致,该列才可以映射成功。

  如果查询休 如果查询企来的列name과 pojo中的属性名查询는 不一致,没有创建pojo对象。

  只要查询出来的列name and pojo中的属性有一一致,就会创建pojo对象。

1.1.输流简单类型

  需求:用户信息的综合查询列表,通过查询总数才能实现分页功能。'

  UserMapper.xml적대码 

1 2 5 8 12 13     16

) usermapper.java 的 的 代码 1 public 인터페이스 usermapper {2 // 用户 信息 信息 综合 查询 3 public int findusercount (userQueryVo userQueryVo); 4}


junit 测试 代码

1개의 패키지 com.mybatis.dao.test; 2  3 import java.io.InputStream; 4 import java.util.Date; 5 import java.util.List; 6  7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 가져오기 org.apache.ibatis.session.SqlSessionFactory;10 가져오기 org.apache.ibatis.session.SqlSessionFactoryBuilder;11 가져오기 org.junit.Before;12 가져오기 org.junit.Test;13 14 가져오기 com.mybatis.entity.User ;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis.mapper.UserMapper;18 19 public class UserMapperTest {20 21     private SqlSessionFactory sqlSessionFactory;22 23     // 此方法是에서findUserByIdTest 지前执行24     @Before25     public void setUp()에서 예외 발생 {26         String Resource = "SqlMapConfig.xml";27         InputStream inputStream = Resources.getResourceAsStream(resource);28         // 创建SqlSessionF catory29         sqlSessionFactory = 새로운 SqlSessionFactoryBuilder().build (inputStream);30     }31     32     @Test33     public void findUserCountTest() {34         SqlSession sqlSession = sqlSessionFactory.openSession();35         //创造查询条件36         사용자 QueryVo userQueryVo = new UserQueryVo();37         UserCustom userCustom = new UserCustom(); 38         userCustom.setSex("2");39         userCustom.setUsername("작은");40         userQueryVo.setUserCustom(userCustom);41         // 创建Usermapper对象 ,mybatis自动生成mapper代理对象42        UserMapper 매퍼 = sqlSession.getMapper(UserMapper .class);43         int count=mapper.findUserCount(userQueryVo);44         System.out.println(count);45         sqlSession.commit();46         sqlSession.close();47     }48 }
코드 보기

> 

  不管是输출품 포조单个对象还是一个列表(list中包括pojo),inmapper.xml中resultType指定的类型是一样的입니다.

  withmapper.java指정적 방법입니다.

 1.2. 1.输出单个pojo对象, 方法返回值是单个对象类型

1 공용 인터페이스 UserMapper {2     /**ID를 기준으로 사용자 정보 조회*/3     공용 사용자 findUserById(int id);4 }

 1.2.2.输出pojo对象list,方法返回值是List

1 공용 인터페이스 UserMapper {2     /**사용자 이름을 기반으로 사용자 정보 퍼지 쿼리*/3     public List findUserByName(문자열 사용자 이름);4 }

小结:生成的动态代理对象中是根据mapper.java방법적返回值类型确결정是调사용selectOne(返回单个对象调용)还是selectList(返回集합对象调사용)

1.3.输流类型resultMap

    mybatis中使用resultMap完成高级输流结果映射。

 1.3.1 .resultMap使사용 방법

    ( 1).정의resultMap

    (2).使useresultMap작성문의 输流映射类型

 1.3.2.demo例子

  (1).需求: 바닥면 sql使useUser完成映射

    select id id_,username username_ from t_user where id=?

    User类中属性 Name 和上边的列名不一致。

  (2). 사용자 정의 결과지도   

1 2 5 8 12 13 18 19 30 31


  (3)

1 4 < ;select id="findUserByIdResultMap" 매개변수 유형="int " resultMap="userResultMap" >5 t_user에서 id id_,username username_ 선택 id=#{id}6


UserMapper.java 코드

공용 인터페이스 UserMapper { /**ID를 기준으로 사용자 정보를 조회하고 resultMap을 사용하여 출력*/ 공용 사용자 findUserByIdResultMap(int id);}


Junit 테스트 코드:

1 패키지 com.mybatis.dao.test; 4 import java.util.Date; 6 import org.apache.ibatis.io.Resources; org.apache.ibatis.session.SqlSession; 9 가져오기 org.apache.ibatis.session.SqlSessionFactory;10 가져오기 org.apache.ibatis.session.SqlSessionFactoryBuilder;11 가져오기 org.junit.Before;12 가져오기 org.junit.Test; 13 14 import com.mybatis.entity.User; 15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis.mapper.UserMapper;18 19 공개 클래스 UserMapperTest {20 21 비공개 SqlSessionFactory sqlSessionFactory;22 23 // 이 메서드는 findUserByIdTest를 실행하기 전 Execute 24에 있습니다. @Before25 public void setUp() throws Exception {26 String Resource = "SqlMapConfig.xml";27 InputStream inputStream = Resources.getResourceAsStream(resource);28 // SqlSessionFcatory29 생성 sqlSessionFactory = new SqlSessionFactoryBuilder().build( inputStream);30 }31 32 @Test33 public void testFindUserByIdResultMap() {34 SqlSession sqlSession = sqlSessionFactory.openSession();35 // Usermapper 객체 생성, mybatis는 자동으로 매퍼 프록시 객체 생성 36 UserMapper mapper = sqlSession.getMapper(UserMapper.class) ;37         사용자 user = mapper.findUserByIdResultMap(1) 38         System.out.println(user) 39     }41 }

코드 보기

요약:

출력 매핑에 resultType을 사용하세요. 쿼리된 열 이름이 pojo의 속성 이름과 일치하는 경우에만 열이 성공적으로 매핑될 수 있습니다.

쿼리된 컬럼 이름과 pojo 속성 이름이 일치하지 않는 경우 resultMap을 정의하여 컬럼 이름과 pojo 속성 이름 간의 매핑 관계를 만듭니다.

위 내용은 mybatis를 시작하기 위한 기본 사항입니다(4). 입력 매핑과 출력 매핑에 대한 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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