zoukankan      html  css  js  c++  java
  • mybatis一对多映射【班级与学生】

    1)如图

    2)创建grades.sql和students.sql

    drop table students;
    drop table 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 students(sid,sname,sgid) values(1,'哈哈',1);
    insert into students(sid,sname,sgid) values(2,'呵呵',1);

    3)创建Grade.java和Student.java

    **
     * 班级(单方)
    */
    public class Grade {
        private Integer id;
        private String name;
        private List<Student> studentList = new ArrayList<Student>();
        public Grade(){}
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public List<Student> getStudentList() {
            return studentList;
        }
        public void setStudentList(List<Student> studentList) {
            this.studentList = studentList;
        }
    }
    /**
     * 学生(多方)
    */
    public class Student {
        private Integer id;
        private String name;
        private Grade grade;
        public Student(){}
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Grade getGrade() {
            return grade;
        }
        public void setGrade(Grade grade) {
            this.grade = grade;
        }
    }

    4)创建GradeMapper.xml和StudentMapper.xml

    GradeMapper.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="gradeNamespace">
        <resultMap type="loaderman.one2many.Grade" id="gradeMap">
            <id property="id" column="gid" />
            <result property="name" column="gname"/>
            <collection property="studentList" resultMap="studentNamespace.studentMap"/>
        </resultMap>
        <select id="findGradeByName" parameterType="string" resultMap="gradeMap">
            select g.gid,g.gname,s.sid,s.sname
            from grades g,students s
            where g.gid = s.sgid
            and s.sname = #{name}
        </select>
    </mapper>

      StudentMapper.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="studentNamespace">
        <resultMap type="loaderman.one2many.Student" id="studentMap">
            <id property="id" column="sid" />
            <result property="name" column="sname"/>
            <association property="grade" resultMap="gradeNamespace.gradeMap"/>
        </resultMap>
        <select id="findAllByName" parameterType="string" resultMap="studentMap">
            select s.sid,s.sname,g.gid,g.gname
            from grades g,students s
            where g.gid = s.sgid
            and g.gname = #{name}
        </select>
    </mapper>

    5)创建GradeStudentDao.java

    public class GradeStudentDao {
        /**
         * 查询java班级有哪些【学生】
         */
        public List<Student> findAllByName(String name) throws Exception{
            SqlSession sqlSession = null;
            try{
                sqlSession = MybatisUtil.getSqlSession();
                return sqlSession.selectList("studentNamespace.findAllByName",name);
            }catch(Exception e){
                e.printStackTrace();
                throw e;
            }finally{
                MybatisUtil.closeSqlSession();
            }
        }
        /**
         * 查询哈哈属于哪个【班级】
         */
        public Grade findGradeByName(String name) throws Exception{
            SqlSession sqlSession = null;
            try{
                sqlSession = MybatisUtil.getSqlSession();
                return sqlSession.selectOne("gradeNamespace.findGradeByName",name);
            }catch(Exception e){
                e.printStackTrace();
                throw e;
            }finally{
                MybatisUtil.closeSqlSession();
            }
        }
        public static void main(String[] args) throws Exception{
            GradeStudentDao dao = new GradeStudentDao();
            List<Student> studentList = dao.findAllByName("java");
            for(Student s  : studentList){
        System.out.println(s.getId()+":"+s.getName()+":"+s.getGrade().getId()+":"+s.getGrade().getName());
            }
            Grade grade = dao.findGradeByName("哈哈");
            System.out.println(grade.getId()+":"+grade.getName());
        }
    }
  • 相关阅读:
    easy ui 常用控件配置
    oracel 查询语句
    .Net 取树形结构的数据
    Asp.Net Core File的操作
    js 页面技巧
    ASP.NET Core 文件上传
    ASP.NET EF实体主外键关系
    ASP.NET MVC 后台传值前端乱码解决方案 富文本Ueditor编辑
    手机访问网站自动跳转到手机版
    Ecshop布局参考图
  • 原文地址:https://www.cnblogs.com/loaderman/p/10064617.html
Copyright © 2011-2022 走看看