mysql test 映射到实体_MyBatis实体关系映射

作者:知了汇智-刘阳

4e209a477373043905c554fadc610d8b.png

MyBatis既然是一个ORM框架,则它也有像Hibernate那样的一对多,多对多,多对一的实体关系映射功能。下面我们就来介绍一下如何使用MyBatis的实体关系映射1.MyBatis实体关系映射,对于我个人来讲常用的有下面两种
多对一:在子表的映射文件中添加association
一对多:在父表的映射文件中添加collection2.MyBatis中多对一的案例
先创建两张表
CREATE TABLE `student` ( `sid` int(11) default NULL, `sname` varchar(10) default NULL, `t_id` int(11) default NULL ) ; CREATE TABLE `teacher` ( `t_id` int(11) NOT NULL, `t_name` varchar(20) default NULL, PRIMARY KEY (`t_id`) ) ;
创建实体类
package com.zlt.pojo; public class Teacher { private intt_id; private String t_name; public intgetT_id() { return t_id; } public void setT_id(int t_id) { this.t_id = t_id; } public String getT_name() { return t_name; } public void setT_name(String t_name) { this.t_name = t_name; } } package com.zlt.pojo; public class Student { private int sid; private String sname; private Teacher teacher; public int getSid() { return sid; } public void setSid(intsid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } }
创建StudentMapper.xml文件,在此XML文件中配置多对一的关系<?xml version="1.0" encoding="UTF-8" ?> select * from student a, teacher b where a.t_id = b.t_id and sid = 123
完成多对一关系的代码测试
package com.zlt.test; import java.io.IOException; import java.io.Reader; 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 com.zlt.pojo.Student; public class Test03 { private static SqlSessionFactorysqlSessionFactory; private static Reader reader; static { try { reader = Resources.getResourceAsReader("config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } @Test public void m01() { SqlSessionsqlSession = sqlSessionFactory.openSession(); String sql = "com.zlt.mapper.StudentMapper.getStudent"; Student student = sqlSession.selectOne(sql); System.out.println(student.getSname() + " === " + student.getTeacher().getT_name()); sqlSession.close(); } }3.MyBatis一对多的案例
修改Student和Teacher这两个实体类
package com.zlt.pojo; public class Student { private intsid; private String sname; private Teacher teacher; public intgetSid() { return sid; } public void setSid(intsid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } } package com.zlt.pojo; import java.util.List; public class Teacher { private intt_id; private String t_name; private List student; public ListgetStudent() { return student; } public void setStudent(List student) { this.student = student; } public intgetT_id() { return t_id; } public void setT_id(intt_id) { this.t_id = t_id; } public String getT_name() { return t_name; } public void setT_name(String t_name) { this.t_name = t_name; } }
创建TeacherMapper的映射文件,在此文件的标签中加入<?xml version="1.0" encoding="UTF-8" ?> select * from teacher a,student b where a.t_id = b.t_id and a.t_id = 1
测试
package com.zlt.test; import java.io.IOException; import java.io.Reader; import java.util.List; 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 com.zlt.pojo.Student; import com.zlt.pojo.Teacher; public class Test03 { private static SqlSessionFactorysqlSessionFactory; private static Reader reader; static { try { reader = Resources.getResourceAsReader("config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } @Test public void m01() { SqlSessionsqlSession = sqlSessionFactory.openSession(); String sql = "com.zlt.mapper.StudentMapper.getStudent"; Student student = sqlSession.selectOne(sql); System.out.println(student.getSname() + " === " + student.getTeacher().getT_name()); sqlSession.close(); } @Test public void m02() { SqlSessionsqlSession = sqlSessionFactory.openSession(); String sql = "com.zlt.mapper.TeacherMapper.getTeacher"; Teacher teacher = sqlSession.selectOne(sql); List student = teacher.getStudent(); for (Student s : student) { System.out.println(teacher.getT_name() + "====" + s.getSname()); } sqlSession.close(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值