美文网首页
98、【JavaEE】【Mybatis】复杂映射

98、【JavaEE】【Mybatis】复杂映射

作者: yscyber | 来源:发表于2021-11-15 22:17 被阅读0次

    1、概述

    • 在映射配置文件中,查询语句标签<select>中,有resultType这一属性,如果实体的属性名与表中字段名一致,会将查询结果自动封装到实体类中。但是如果不一致,则需要在映射配置文件中使用<resultMap>标签配置映射关系,并在<select>中使用resultMap

    2、举例

    CREATE TABLE xxx(
      id INT NOT NULL,
      name VARCHAR(3) NOT NULL
    );
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    
    /**
     * 数据库中字段名 与 类中属性名 可以不一致
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString
    public class Xxx {
    
        private Integer idxxx;
    
        private String namexxx;
    
    }
    
    import com.yscyber.mybatis.one.Xxx;
    
    import java.util.List;
    
    public interface XxxRepo {
    
        List<Xxx> listAllXxx();
    
    }
    
    <?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"/>
    
        <typeAliases>
            <typeAlias type="com.yscyber.mybatis.one.Xxx" alias="Xxx"/>
        </typeAliases>
        
        <environments default="dev">
            <!-- 配置数据源 -->
            <environment id="dev">
                <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>
    
        <!-- 加载映射文件 -->
        <mappers>
            <mapper class="com.yscyber.mybatis.one.repo.XxxRepo"/>
        </mappers>
        
    </configuration>
    
    <?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.yscyber.mybatis.one.repo.XxxRepo">
    
        <!-- <id> 主键字段 -->
        <!-- <result> 非主键字段 -->
        <!-- property POJO 属性名 -->
        <!-- column 数据库表字段名 -->
        <resultMap id="xxxResultMap" type="com.yscyber.mybatis.one.Xxx">
            <result property="idxxx" column="id"/>
            <result property="namexxx" column="name"/>
        </resultMap>
    
        <select id="listAllXxx" resultMap="xxxResultMap">
            SELECT id, name
            FROM xxx
        </select>
    
    </mapper>
    
        @Test
        public void test7() {
            try {
                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
                SqlSession sqlSession = sqlSessionFactory.openSession();
    
                XxxRepo xxxRepo = sqlSession.getMapper(XxxRepo.class);
    
                List<Xxx> xxxList = xxxRepo.listAllXxx();
                for (Xxx val : xxxList) {
                    System.out.println(val);
                }
    
                sqlSession.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    

    相关文章

      网友评论

          本文标题:98、【JavaEE】【Mybatis】复杂映射

          本文链接:https://www.haomeiwen.com/subject/ygkuoltx.html