详解MyBatis resultType与resultMap中的几种返回类型

一、返回集合

1.返回JavaBean集合

public List selectMyUserByNameLike(String name);

测试方法

public static void main(String[] args) {
    SqlSession session = null;
    try {
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        session = sqlSessionFactory.openSession();

        MyUserMapper mapper = session.getMapper(MyUserMapper.class);
        List myUsers = mapper.selectMyUserByNameLike("%a%");
        System.out.println(myUsers);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

2.返回 Map 集合


详解MyBatis resultType与resultMap中的几种返回类型_第1张图片

二、返回 Map

1.一条记录

public Map selectMyUserById(Integer id);

2.多条记录,需要指定 Map 的 Key 和 Value 的类型

// 指定 Map 的 Key 从记录中的 id 列获取
@MapKey("id")
public Map selectMyUserByGtId(Integer id);

三、返回 resultMap 自定义结果集封装

关于自动映射封装的配置


    
    
    
    
    
    

默认数据库字段与 JavaBean 对应不上时可开启驼峰命名或查询时使用别名http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html

1.自定义 JavaBean 的封装

确认是否成功可以关掉 MyBatis 的自动映射

public MyUser selectMyUserById(Integer id);


    
    
    
    
    
    



2.关联查询的封装,一对一,JavaBean 属性包含 JavaBean

详解MyBatis resultType与resultMap中的几种返回类型_第2张图片

public MyUser selectMyUserById(Integer id);

直接调用属性赋值


    
    
    
    
    
    


使用association


    
    
    
    
    
        
        
    


使用association 二次查询,即有两条 SQL


    
    
    
    
    





    

详解MyBatis resultType与resultMap中的几种返回类型_第3张图片

开启懒加载:在没有使用 Dept 的属性时,则只会加载 MyUser 的属性。即只会发送一条 SQL 语句,要使用Dept 属性时才会发送第二条 SQL。不会一次性发送两条 SQL




3.关联查询的封装,一对多,JavaBean 属性包含 JavaBean 的集合

详解MyBatis resultType与resultMap中的几种返回类型_第4张图片

使用association

public Dept getDeptById(Integer id);

    
    
    
    
        
        
        
        
    

详解MyBatis resultType与resultMap中的几种返回类型_第5张图片

关闭懒加载,使用二次查询

public Dept getDeptByIdStep(Integer did);


    
    
    
    

public List selectMyUserByDid(Integer dId);

详解MyBatis resultType与resultMap中的几种返回类型_第6张图片

4.鉴别器discriminator




    
    
    
    
    
        
        
            
        
        
        
            
        
    

详解MyBatis resultType与resultMap中的几种返回类型_第7张图片

详解MyBatis resultType与resultMap中的几种返回类型_第8张图片

上面测试中使用的实体类与数据

public class Dept {
    private Integer id;
    private String name;
    private List myUsers;
public class MyUser {
    private Integer id;
    private String name;
    private Integer age;
    private Dept dept;

详解MyBatis resultType与resultMap中的几种返回类型_第9张图片

https://mybatis.org/mybatis-3/zh/sqlmap-xml.html

到此这篇关于详解MyBatis resultType与resultMap中的几种返回类型的文章就介绍到这了,更多相关MyBatis resultType与resultMap返回类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(详解MyBatis resultType与resultMap中的几种返回类型)