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))

猜你喜欢

转载自www.cnblogs.com/zhou-test/p/9768100.html
今日推荐