如何配置mybatis对应的xml如何配置一对多关系(实现表之间的一对多关系的xml)的xml文件?

先配置一个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 查询得到他对应的班级

谢谢!!! 写的不好,望请见谅!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值