美文网首页
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