建表
create table student(
id int(10) primary key,
name varchar(20) default null,
tid int(10) default null,
foreign key(tid) references teacher(id)
)
insert into teacher values(1,'秦老师');
insert into student values(1,'小明',1);
insert into student values(2,'小红',1);
insert into student values(3,'小张',1);
insert into student values(4,'小李',1);
insert into student values(5,'小王',1);
接口
TeacherMapper
StudentMapper
package com.tjrac.dao;
import com.tjrac.pojo.Teacher;
import com.tjrac.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
public interface TeacherMapper {
//查询全部用户
List<Teacher> getTeacherList(int i);
}
package com.tjrac.dao;
import com.tjrac.pojo.Student;
import com.tjrac.pojo.Teacher;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface StudentMapper {
List<Student> getStudentList();
List<Student> getStudentList2();
}
实体类
Student
Teacher
package com.tjrac.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private int id;
private String name;
private Teacher teacher;
}
package com.tjrac.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Teacher {
private int id;
private String name;
}
配置文件
StudentMapper.xml
TeacherMapper.xml
mybatis-config.xml
StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mybatis的核心配置文件是有一定顺序的 -->
<mapper namespace="com.tjrac.dao.StudentMapper">
<!--
按结果查询
实现了select student.id,student.name,teacher.name from student,teacher where student.tid=teacher.id
-->
<select id="getStudentList2" resultMap="StudentTeacher2">
select student.id,student.name,teacher.name as tname from student,teacher where student.tid=teacher.id
</select>
<resultMap id="StudentTeacher2" type="com.tjrac.pojo.Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" javaType="com.tjrac.pojo.Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
<!--==========================================================-->
<!--
按嵌套查询
实现了select student.id,student.name,teacher.name from student,teacher where student.tid=teacher.id
-->
<select id="getStudentList" resultMap="StudentTeacher">
select * from student
</select>
<select id="getTeacherList" resultType="com.tjrac.pojo.Teacher">
select * from teacher where id=#{id}
</select>
<resultMap id="StudentTeacher" type="com.tjrac.pojo.Student" >
<result property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" column="tid" javaType="com.tjrac.pojo.Teacher" select="getTeacherList"/>
</resultMap>
</mapper>
TeacherMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mybatis的核心配置文件是有一定顺序的 -->
<mapper namespace="com.tjrac.dao.TeacherMapper">
<select id="getTeacherList" resultType="com.tjrac.pojo.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">
<!--mybatis的核心配置文件是有一定顺序的 -->
<configuration>
<!-- 配置运行环境 -->
<!-- 在MyBatis里面可以通过environments标签配置多套运行环境,但是有一套默认的运行环境。
默认的运行环境写在default属性中。
environments标签下面的每一个environment标签都是一套运行环境,每一套运行环境有一个
唯一指定的id属性。
在每一套运行环境中需要配置:
1、事务管理transactionManager标签:我们采用JDBC的事务管理。
2、数据源dataSource标签:我们采用的是POOLED,这种类型是MyBatis自带的数据源。
也可以使用JNDI,JNDI是Tomcat的数据源。
3、在数据源中设置相应的property属性。四个属性分别对应database.properties里面的属性。
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<!--mybatis数据库名
useSSL=true&安全连接
useUnicode=true&设置编码
characterEncoding=UTF-8&使用UFT-8编码
serverTimezone=Asia/Shanghai设置时区
-->
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
" />
<property name="username" value="root" />
<property name="password" value="654321" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/tjrac/dao/StudentMapper.xml"/>
<mapper resource="com/tjrac/dao/StudentMapper.xml"/>
</mappers>
</configuration>
测试类
package com.tjrac.dao;
import com.tjrac.pojo.Student;
import com.tjrac.pojo.Teacher;
import com.tjrac.pojo.User;
import com.tjrac.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Mytest {
@Test
public void getTeacherList(){
//第一步:获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//第二步:执行SQL
TeacherMapper teacherDao= sqlSession.getMapper(TeacherMapper.class);
List<Teacher> list=teacherDao.getTeacherList(1);
for(Teacher t: list){
System.out.println(t.toString());
}
sqlSession.close();
}
@Test
public void getStudentList(){
//第一步:获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//第二步:执行SQL
StudentMapper teacherDao= sqlSession.getMapper(StudentMapper.class);
List<Student> list=teacherDao.getStudentList();
for(Student t: list){
System.out.println(t.toString());
}
sqlSession.close();
}
@Test
public void getStudentList2(){
//第一步:获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//第二步:执行SQL
StudentMapper teacherDao= sqlSession.getMapper(StudentMapper.class);
List<Student> list=teacherDao.getStudentList();
for(Student t: list){
System.out.println(t.toString());
}
sqlSession.close();
}
}