zoukankan      html  css  js  c++  java
  • MyBatis学习总结之一对多映射

    1、首先创建2张表:students 和grades

    create table grades(
        gid int(5) primary key,
        gname varchar(10)    
    );
    
    create table students(
        sid int(5) primary key,
        sname varchar(10),    
        sgid int(5),
        constraint sgid_fk foreign key(sgid) references grades(gid)
    );
    
    insert into grades(gid,gname) values(1,'java');
    
    insert into student(sid,sname,sgid) values(1,'哈哈',1);
    insert into student(sid,sname,sgid) values(2,'呵呵',1);
    
    
    select * from grades;
    select * from student;

    2、创建POJO:Student.java 和Grade.java

    @Data
    public class Student {
        private Integer id;
        private String name;
        private Grade grade;
    }
    @Data
    public class Grade {
        private Integer id;
        private String name;
       
    }

    3、创建StudentMapper接口查询Java学科有哪些学生信息

    import com.longteng.diamond.domain.one2many.Student;
    import org.apache.ibatis.annotations.Mapper;
    
    import java.util.List;
    
    @Mapper
    public interface StudentMapper {
        /*
        查询java学科有哪些学生信息
        */
        public List<Student> findBySubject(String subject);
        
    }

    4、创建StudentGradeMapper.xml文件

    <?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.longteng.diamond.dao.one2many.StudentMapper">
        <resultMap id="myStudent" type="com.longteng.diamond.domain.one2many.Student">
            <id property="id" column="sid" jdbcType="INTEGER"></id>
            <result property="name" column="sname" jdbcType="VARCHAR"></result>
            <collection property="grade" ofType="com.longteng.diamond.domain.one2many.Grade">
                <id property="id" column="gid"></id>
                <result property="name" column="gname"></result>
            </collection>
        </resultMap>
       /*
        查询java学科有哪些学生信息
        */

    <select id="findBySubject" parameterType="java.lang.String" resultMap="myStudent">

    select s.sid,s.sname ,g.gid,g.gname from student s inner join grades g on s.sgid = g.gid where g.gname=#{0}
    </select>
    </mapper>

    5、创建Controller

    import com.longteng.diamond.dao.one2many.StudentMapper;
    import com.longteng.diamond.domain.one2many.Student;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.util.CollectionUtils;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    public class StudentCardController {
    
        @Autowired
        StudentMapper studentMapper;
    
        /*
        查询java学科有哪些学生信息
         */
        @RequestMapping("/findBySubject")
         public  String test1(){
            List<Student> studentList = studentMapper.findBySubject("java");
            StringBuffer stringBuffer = new StringBuffer();
            if(!CollectionUtils.isEmpty(studentList)){
                for(Student student:studentList){
                    stringBuffer.append(student.toString());
                }
            }
            return stringBuffer.toString();
        }
    }

    6、运行接口http://localhost/findBySubject获取测试结果

    Student(id=1, name=哈哈, grade=Grade(id=1, name=java))Student(id=2, name=呵呵, grade=Grade(id=1, name=java))
  • 相关阅读:
    2019 SDN上机第1次作业
    团队Git现场编程实战
    团队项目-需求分析报告
    第二次结对编程作业
    老学长的TODOLIST
    离散化
    某大佬的TODOLIST
    第一次个人编程作业
    第一次博客作业
    第一次个人编程作业
  • 原文地址:https://www.cnblogs.com/zhou-test/p/9768100.html
Copyright © 2011-2022 走看看