resultMap結果集映射


resultMap結果集是用來定義sql查詢的結果與java對象的映射關系。它主要解決2大問題:

1)可以解決POJO屬性名和表結構的字段名不一致問題(甚至是 不是標准的駝峰命名法)

2)可以完成高級查詢,例如:一對一,一對多,多對多

其中還有一個比較重要的屬性:autoMapping自動映射  默認為true。

注意:1.如果true,並且列名稱和字段名稱一致,是可以完成映射。

          2.如果為true,名稱不一致,但是符合駝峰命名,但必須開啟駝峰命名匹配。

下面簡單介紹一個案列:

接口:UserMapper.java

package com.inter;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.pojo.User;

public interface UserMapper {
    
//    查詢數據
    public List<User> selectAll();
    
}

Mybatis配置文件: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="jdbc.properties"></properties>
      
/* <settings> <!--開啟駝峰命名法--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> */
<!-- 起別名 --> <typeAliases> <typeAlias alias="User" type="com.pojo.User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 指定mapper的配置文件 --> <mappers> <mapper resource="UserMapper.xml"/> </mappers> </configuration>

映射文件:UserMapper.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.inter.UserMapper">
 
    
   <resultMap type="User" id="userResult" autoMapping="true">
           <id property="id" column="id"/>
   </resultMap>
   
   <!-- 查詢所有的數據 -->
   <select id="selectAll" resultMap="userResult">
           select * from tb_user
   </select>
   
 </mapper>

實體類:User.java

package com.pojo;

public class User {
    private int id;
    private String name;
    private String age;
    private String sex;
    
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
    }
    
}

測試類:

package com.test;

import static org.junit.Assert.*;

import java.io.InputStream;
import java.util.List;

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 org.junit.Before;
import org.junit.Test;

import com.inter.UserMapper;
import com.pojo.User;

public class TestMybatisoneTest {

     private UserMapper userMapper;
    
     InputStream inputStream;
     SqlSessionFactory sqlSessionFactory;
     SqlSession sqlSession;
    
    
    @Before
    public void setUp() throws Exception {
        
            String resource = "mybatis-config.xml";     
             
            inputStream = Resources.getResourceAsStream(resource);
             
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
             
            sqlSession = sqlSessionFactory.openSession();
            
//            動態代理實現
            userMapper = sqlSession.getMapper(UserMapper.class);
    }

    @Test
    public void test4(){
       
        List<User> list = userMapper.selectAll();
        for (User user : list) {
            System.out.println(user+"   ");
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM