先配置一个mybatis.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>
<!-- 这个非常有用,这是在你处理SQL语句时会通过log4j将对应的SQL语句打印显示出来 -->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<mappers>
<!-->这里可以配置多个操作的xml-->
<mapper resource="user.xml" />
</mappers>
</configuration>
假设数据库中有两个表,老师表与班级表
老师表如下:
CREATE TABLE `t_teacher` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` VARCHAR(50) NOT NULL COMMENT '名称',
PRIMARY KEY (`id`)
)
COMMENT='老师信息表'
COLLATE='gbk_chinese_ci';
班级表如下:
CREATE TABLE `t_class` (
`id` bigint NOT NULL COMMENT '与老师表有主外键关系',
`class_name` VARCHAR(50) NOT NULL COMMENT '班级名称'
)
COMMENT='班级表'
COLLATE='gbk_chinese_ci';
主外键关系建立
ADD CONSTRAINT 'class_teacher_key' FOREIGN KEY (`id`) REFERENCES`t_teacher` (`id`);
对应实体类
import java.util.List;
public class Teacher {
private Long id;
private String teacherName;
// 一个老师对应多个班级
private List<ClassRoom> classRoom;
public Teacher() {
}
public Teacher(Long id, String teacherName, List<ClassRoom> classRoom) {
super();
this.id = id;
this.teacherName = teacherName;
this.classRoom = classRoom;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public List<ClassRoom> getClassRoom() {
return classRoom;
}
public void setClassRoom(List<ClassRoom> classRoom) {
this.classRoom = classRoom;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", teacherName=" + teacherName + "]";
}
}
public class ClassRoom {
private Long id;
private String className;
public ClassRoom() {
}
public ClassRoom(Long id, String className) {
super();
this.id = id;
this.className = className;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "ClassRoom [id=" + id + ", className=" + className + "]";
}
}
现在配置user.xml的SQL语句操作以及配置一对多关系
<!-- column 放数据库列名,property放实体类属性名 -->
<mapper namespace="dao接口">
<resultMap type="实体类包名" id="teacherMap">
<id column="id" property="id" />
<result column="name' property="teacherName"/>
<collection property="classRoom" ofType="实体类路径">
<id column="id" property="id" />
<result column="class_name' property="className" />
</collection>
</resultMap>
<!-- SQL语句操作 -->
<select id="selectTeacherToClass" resultMap="teacherMap">
select * from t_teacher t,t_class c where t.name = #{teacherName} and t.id = c.id;
</select>
</mapper>
如上面的配置,就可以通过teacherName 查询得到他对应的班级
谢谢!!! 写的不好,望请见谅!