使用数据库
https://www.cnblogs.com/shihaiming/p/5853616.html
添加外键约束
alter table student add constraint student foreign key (tid) references teacher(tid)
一、使用mapper动态代理:
1.修改student.xml命名空间地址
<!-- 将命名空间换成动态的映射文件的地址 -->
<mapper namespace="com.test3.mapper.StudentMapper">
<select id="findTeacherByStuSid" parameterType="_int"
resultType="Teacher">
<!-- 虽然是查询的是student和teacher的两个表的数据,但是,查询到的结果会自动的根据返回的的数据类型进行装配 -->
select student.*,teacher.* from student , teacher where
teacher.tid = student.tid and student.sid = #{sid}
</select>
<insert id="insertAteacher" parameterType="Teacher">
insert into teacher (name,sex,profession)values(#{name},#{sex},#{profession})
</insert>
<select id="getAllTeacher" resultType="Teacher">
select * from teacher
</select>
2.创建动态的映射文件 //定义的studentMapper的动态映射接口 public interface StudentMapper {
public Teacher findTeacherByStuSid(int sid);
public void insertAteacher(Teacher t);
public List<Teacher> getAllTeacher();
}
3.通过Mapper代理对象进行数据库的操作
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 然后根据 sqlSessionFactory 得到 session
SqlSession session = sqlSessionFactory.openSession();
//获取到响应的映射对象
StudentMapper2 mapper = session.getMapper(StudentMapper2.class);
Teacher teacher = mapper.findTeacherByStuSid(12);
System.out.println(teacher.toString());
Teacher teacher2 = new Teacher();
teacher2.setName("美女4号");
teacher2.setSex("妞");
teacher2.setProfession("教师");
mapper.insertAteacher(teacher2);
List<Teacher> teachersList = mapper.getAllTeacher();
for (int i = 0; i < teachersList.size(); i++) {
System.out.println(teachersList.get(i).toString());
}
二、使用注解
1、定义注解的映射文件
//定义的studentMapper的动态映射接口
public interface StudentMapper2 {
@Select(" select student.*,teacher.* from student , teacher where teacher.tid = student.tid and student.sid = #{sid}")
public Teacher findTeacherByStuSid(int sid);
@Insert("insert into teacher (name,sex,profession) values(#{name},#{sex},#{profession})")
public void insertAteacher(Teacher t);
@Select("select * from teacher")
public List<Teacher> getAllTeacher();
}
2、修改mybatis-config.xml中的映射
<mappers>
<mapper class="com.test3.mapper.StudentMapper2"></mapper>
<!-- <mapper resource="./student.xml"/> -->
</mappers>
3.使用方法和上面的mapper的动态代理相同