JavaEE——MyBatis将查询结果集封装进POJO实体类

简单介绍

在之前的我们比较详细的介绍过MyBatis的配置信息的时候,在SQL映射文件中说过我们可以直接将结果集映射到我们的POJO实体类中,省去了我们自己处理查询结果集的时间和代码,接下来我们就来演示将单条数据和多条数据映射到我们POJO实体类的情况

前期准备:

MyBatis核心配置文件:、



    
    
    
        
            
            
                
                
                
                
                
            
        
    
    
        
    

数据表信息:

create database mybatis;
use mybatis;
create table user(
    id int,
    name varchar(20),
    age int,
    gender varchar(3)
);
insert into user values (1,'张三',12,'男'),
                        (2,'李四',12,'女'),
                        (3,'王五',18,'男');

JavaEE——MyBatis将查询结果集封装进POJO实体类_第1张图片 

POJO实体类:注意这个实体类是放在一个包下面的

package com.mybites.mappers;

public class user {
    private int id;
    private String name;
    private int age;
    private String gender;

    @Override
    public String toString() {
        return "course{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public user(int id, String name, int age, String gender) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public user() {
    }
}

SQL语句映射文件:




    
 

将单条数据映射到POJO实体类:

将前期准备工作完成之后,我们就可以开始编写Java代码了,我们可以现在test下面测试我们的代码:

JavaEE——MyBatis将查询结果集封装进POJO实体类_第2张图片

import com.mybatis.POJO.User;
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.Test;

import java.io.InputStream;

public class doSomething {
//    使用单元测试
    @Test
    public void selectOne() throws Exception{
//        以流的形式封装MyBatis核心配置文件
        InputStream stream = Resources.getResourceAsStream("mybatis.xml");
//        解析核心配置文件并生成SqlSessionFactory对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
//        生成持久化连接对象并操作数据库
        SqlSession sqlSession = build.openSession();
//        使用方法操作数据库映射文件中的SQL语句,第一个参数是SQL映射文件的唯一标识,第二个参数是拼接在SQL语句中占位符的查询参数
//        这个过程会自动将查询结果集映射到POJO实体类,所以这里的返回结果就是我们的实体类对象
        User u = sqlSession.selectOne("Mappers.selectOne", 2);
//        输出查询结果
        System.out.println(u.toString());
    }
}

可以看到在输出结果的阶段省去了我们自己编写查询结果集映射代码

将多条数据映射到POJO实体类:

将多条语句映射到POJO时,通过改变查询的方法和SQL映射文件即可:




    

    
@Test
    public void selectAll() throws Exception {
        //        以流的形式封装MyBatis核心配置文件
        InputStream stream = Resources.getResourceAsStream("mybatis.xml");
//        解析核心配置文件并生成SqlSessionFactory对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
//        生成持久化连接对象并操作数据库
        SqlSession sqlSession = build.openSession();
//        查询多条语句就是将多条结果封装金实体类之后,再将多个实体类组合成一个数组的形式
//        在查询的时候,需要遍历数组然后再得到里面的每一个元素
        List users = sqlSession.selectList("Mappers.selectAll");
        for (User u : users){
            System.out.println(u.toString());
        }
    }

最终的目录结构和代码:

目录结构:

JavaEE——MyBatis将查询结果集封装进POJO实体类_第3张图片

代码: 

import com.mybatis.POJO.User;
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.Test;

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

public class doSomething {
//    使用单元测试
    @Test
    public void selectOne() throws Exception{
//        以流的形式封装MyBatis核心配置文件
        InputStream stream = Resources.getResourceAsStream("mybatis.xml");
//        解析核心配置文件并生成SqlSessionFactory对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
//        生成持久化连接对象并操作数据库
        SqlSession sqlSession = build.openSession();
//        使用方法操作数据库映射文件中的SQL语句,第一个参数是SQL映射文件的唯一标识,第二个参数是拼接在SQL语句中占位符的查询参数
//        这个过程会自动将查询结果集映射到POJO实体类,所以这里的返回结果就是我们的实体类对象
        User u = sqlSession.selectOne("Mappers.selectOne", 2);
//        输出查询结果
        System.out.println(u.toString());
    }
    @Test
    public void selectAll() throws Exception {
        //        以流的形式封装MyBatis核心配置文件
        InputStream stream = Resources.getResourceAsStream("mybatis.xml");
//        解析核心配置文件并生成SqlSessionFactory对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
//        生成持久化连接对象并操作数据库
        SqlSession sqlSession = build.openSession();
//        查询多条语句就是将多条结果封装金实体类之后,再将多个实体类组合成一个数组的形式
//        在查询的时候,需要遍历数组然后再得到里面的每一个元素
        List users = sqlSession.selectList("Mappers.selectAll");
        for (User u : users){
            System.out.println(u.toString());
        }
    }
}

你可能感兴趣的:(mybatis,java-ee,java)