mybatis 实现分布查询demo

                                   最近刚刚在看mybatis的复杂查询 写了个分布查询的demo 有错请指正

项目结构很简单:

数据库:tid 是外键关联

student 表

 

teacher 表

首先创建Student 和Teacher 实体类

package entity;


public class Student {
    private Integer  sid;
    private String sName;
    private String Ssex;
    private Integer Sagenum;
    private Integer tid;
    private Teacher teacher;
    public Student() {
    }
    public Student(Integer sid, String sName, String ssex, Integer sagenum, Integer tid) {
        this.sid = sid;
        this.sName = sName;
        Ssex = ssex;
        Sagenum = sagenum;
        this.tid = tid;
    }


    public Student(Integer sid, String sName, String ssex, Teacher teacher, Integer sagenum, Integer tid) {
        this.sid = sid;
        this.sName = sName;
        Ssex = ssex;
       this.teacher = teacher;
        Sagenum = sagenum;
        this.tid = tid;
    }
    public Integer getSid() {
        return sid;
    }
    public void setSid(Integer sid) {
        this.sid = sid;
    }
    public String getsName() {
        return sName;
    }
    public void setsName(String sName) {
        this.sName = sName;
    }
    public String getSsex() {
        return Ssex;
    }
    public void setSsex(String ssex) {
        Ssex = ssex;
    }
    public Teacher getTeacher() {
        return teacher;
    }
    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }
    public Integer getSagenum() {
        return Sagenum;
    }
    public void setSagenum(Integer sagenum) {
        Sagenum = sagenum;
    }
    public Integer getTid() {
        return tid;
    }
    public void setTid(Integer tid) {
        this.tid = tid;
    }


    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sName='" + sName + '\'' +
                ", Ssex='" + Ssex + '\'' +
                ", Sagenum=" + Sagenum +
                ", tid=" + tid +
                '}';
    }
}

创建Mapper 文件:接口StudentMapper和对应的 StudentMapper,xml文件 接口TeacherMapper 和对应的TeacherMapper.xml 文件

接口:

package Mapper;

import entity.Student;

public interface StudentMapper {

    Student getStudentAndTeacherById(Integer sid) throws Exception;

}

xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Mapper.StudentMapper">

    <select id="getStudentAndTeacherById" resultMap="Stustep">
        SELECT  * from student WHERE  sid=#{sid}
    </select>
    <resultMap id="Stustep" type="entity.Student">
        <id column="Sid" property="sid"/>
        <result column="sName" property="sName"/>
        <result column="tid" property="teacher.tid"/>
        <result column="Ssex" property="Ssex"/>
        <result column="Sagenum" property="Sagenum"/>
        <result column="tid" property="tid"/>
       <association property="teacher" select="Mapper.TeacherMapper.getTeacherByID"<--这里是全类名注意--> column="tid"/>
    </resultMap>
</mapper>

接口:

package Mapper;

import entity.Teacher;

public interface TeacherMapper {
    Teacher getTeacherByID(Integer tid) throws Exception;
}

xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Mapper.TeacherMapper">
    <select id="getTeacherByID" resultType="entity.Teacher">

        select *from teacher WHERE tid=#{tid}

    </select>
</mapper>

写好Mapper 以后就是全局配置文件

jdbc 配置文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mysql_demo
jdbc.username=root
jdbc.password=root

config 文件:

<?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="conf/jdbc.properties"/>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="jdbcTypeForNull" value="NULL"/>
    </settings>
    <typeAliases>

        <package name="entity"/>
    </typeAliases>

    <environments default="mybatis-demo">
        <environment id="mybatis-demo">
            <transactionManager type="JDBC"></transactionManager>
            <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>
    <databaseIdProvider type="DB_VENDOR">
        <property name="Oracle" value="oracle"/>
        <property name="MySQL" value="mysql"/>




    </databaseIdProvider>
<mappers>
    <package name="Mapper"/>

</mappers>






</configuration>

测试类:

import Mapper.StudentMapper;
import entity.Student;
import entity.Teacher;
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 Main {



    @Test
    public void test4() throws Exception {
        SqlSessionFactory sqlSessionFactory = null;
        String resource = "conf/mybatis-config.xml";
        InputStream inputStream;
        SqlSession sqlSession=null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sqlSessionFactory.openSession();
            StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
            Student student=studentMapper.getStudentAndTeacherById(3);
            Teacher teacher=student.getTeacher();
            System.out.println(teacher);
            System.out.println(student);


        } catch (IOException e) {


        } finally {
            sqlSession.close();
        }
    }
}

结果输出:

总结下过程:1.首先根据学生信息查到学生信息中的tid 

2.通过tid 查出老师信息 

3 把老师信息封装到学生对象中

猜你喜欢

转载自blog.csdn.net/kingjiayu/article/details/81144665
今日推荐