mybatis多對一處理兩種處理方式

1.Teacher.java

public class Teacher {
	private int id;
	private String name;
    //省略getter、setter及toString方法
}

2.Student.java

public class Student {
	private int id;
	private String name;
	private int age;
	private int tid;
	//多個學生對應一個老師
	private Teacher teacher;

3.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="com.manytoone.entity.StudentMapper">
	<!-- 多對一的處理
		 1.按查詢結果嵌套處理
		 2.按查詢嵌套
	 -->
	 <!-- 1.按查詢結果嵌套處理 -->
	<select id="selectStudent" resultMap="studentTeacher">
		select s.id,s.name,s.age,s.tid,t.id tids,t.name tname from student s,teacher t where s.tid=t.id
	</select>
	<resultMap type="Student" id="studentTeacher">
		<id column="id" property="id"/>
		<result column="name" property="name"/>
		<result column="age" property="age"/>
		<result column="tid" property="tid"/>
		<!-- 關聯對象property在實體類student中 的屬性-->
		<association property="teacher" javaType="Teacher">
			<id column="tids" property="id"/>
			<result column="tname" property="name"/>
		</association>
	</resultMap>
	
	<!-- 2.按查詢結果處理 -->
	<select id="getStudents" resultMap="studentMapper">
		select * from student
	</select>
	
	<resultMap type="Student" id="studentMapper">
		<association property="teacher" column="tid" javaType="Teacher"
		 select="selectTeacher">
		 </association>
	</resultMap>
	<select id="selectTeacher" resultType="com.manytoone.entity.Teacher">
		select * from teacher where id=#{id}
	</select>
</mapper>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 加載數據庫配置文件-->
	<properties resource="sql.properties"></properties>
	
	<typeAliases>
		<!-- <typeAlias type="com.mybatis.entity.Pet" alias="Pet"/> -->
		<!-- 默認別名是對應的類名 -->
		<package name="com.mybatis.entity"/>
		<package name="com.manytoone.entity"></package>
	</typeAliases>
	<!--environments 指mybatis可以配置多個環境默認,default只想默認的環境
		每個sqlSessionFactory對應一個environment
	  -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- UNPOOLED訪問數據庫時每次都會打開關閉連接
				 POOLED數據庫池減少了每次初始化、創建連接、和請求驗證的時間	
		 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- 定義SQL語句的映射文件 -->
		<mapper resource="com/mybatis/entity/PetMapper.xml"/>
		<mapper resource="com/manytoone/entity/StudentMapper.xml"/>
		<mapper resource="com/manytoone/entity/TeacherMapper.xml"/>
		<mapper class="com.annotation.dao.PetDao"/>
	</mappers>
</configuration>

StudentDao.java

package com.manytoone.dao;

import java.io.IOException;
import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.manytoone.entity.Student;
import com.mybatis.util.MyBatisUtil;

public class StudentDao {

	public List<Student> selectAll() throws IOException{
		SqlSession sqlSession=MyBatisUtil.getSqlSession();
		List<Student> students=sqlSession.selectList("com.manytoone.entity.StudentMapper.selectStudent");
		return students;
	}
	
	public List<Student> getAll() throws IOException{
		SqlSession sqlSession=MyBatisUtil.getSqlSession();
		List<Student> students=sqlSession.selectList("com.manytoone.entity.StudentMapper.getStudents");
		return students;
	}
}

Test.java

package com.manytoone.test;

import java.io.IOException;
import java.util.List;

import com.manytoone.dao.StudentDao;
import com.manytoone.entity.Student;

public class Test {

	public List<Student> selectAll() throws IOException{
		StudentDao studentDao=new StudentDao();
		List<Student> students=studentDao.selectAll();
		return students;
	}
	
	public List<Student> getAll() throws IOException{
		StudentDao studentDao=new StudentDao();
		List<Student> students=studentDao.selectAll();
		return students;
	}
	public static void main(String[] args) throws IOException {
		Test test=new Test();
		List<Student> students=test.getAll();
		for(Student stu:students) {
			System.out.println(stu);
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章