六、注解方式实现关联查询
1.创建表集添加数据参考上一章
2.定义实体类
前两步参考上一章
3.编写对应的dao
ClassesDao.java
package com.mybatis.dao;
import java.util.List;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import com.mybatis.entity.Classes;
import com.mybatis.entity.Teacher;
public interface ClassesDao {
//一次性查找
@Select("select c.c_id cid,c.c_name cname,c.teacher_id teacher_id,t.t_id tid,t.t_name tname from class c,teacher t where c.teacher_id=t.t_id")
@Results(value={@Result(id=true,column="cid",property="c_id"),
@Result(column="cname",property="c_name"),
@Result(column="tid",property="teacher.t_id"),
@Result(column="tname",property="teacher.t_name")
})
public List<Classes> getAllClasses();
//多次查找
@Select("select * from class")
@Results(value={@Result(id=true,column="c_id",property="c_id"),
@Result(column="c_name",property="c_name"),
@Result(one=@One(select="com.mybatis.dao.TeacherDao.getTeacherById"),
column="teacher_id",property="teacher")
})
public List<Classes> getAllClasses2();
@Select("select * from class")
@Results(value={@Result(id=true,column="c_id",property="c_id"),
@Result(column="c_name",property="c_name"),
@Result(one=@One(select="com.mybatis.dao.TeacherDao.getTeacherById"),
column="teacher_id",property="teacher"),
@Result(many=@Many(select="com.mybatis.dao.StudentDao.getStudentByClassId"),
column="c_id",property="students")
})
public List<Classes> getAllClasses4();
}
TeacherDao.java
package com.mybatis.dao;
import org.apache.ibatis.annotations.Select;
import com.mybatis.entity.Teacher;
public interface TeacherDao {
@Select("select * from teacher where t_id = #{t_id}")
public Teacher getTeacherById(int t_id);
}
StudentDao.java
package com.mybatis.dao;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.mybatis.entity.Student;
public interface StudentDao {
@Select("select * from student where s_id = #{s_id}")
public Student getStudentById(int id);
@Select("select * from student where class_id = #{c_id}")
public List<Student> getStudentByClassId(int c_id);
}
4.在conf.xml文件中注册
<mappers>
<mapper class="com.mybatis.dao.ClassesDao" />
<mapper class="com.mybatis.dao.TeacherDao" />
<mapper class="com.mybatis.dao.StudentDao" />
<mapper class="com.mybatis.dao.EmployeeDao" />
</mappers>
package com.mybatis.test;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.mybatis.dao.ClassesDao;
import com.mybatis.dao.StudentDao;
import com.mybatis.dao.TeacherDao;
import com.mybatis.util.DbUtil;
public class ClassesTest {
SqlSession session = DbUtil.getSession();
ClassesDao classesDao = session.getMapper(ClassesDao.class);
@Test
public void selectAllClasses() {
System.out.println(classesDao.getAllClasses());
System.out.println(classesDao.getAllClasses2());
System.out.println(classesDao.getAllClasses4());
}
}