Mybatis一对多关联表查询

本文详细介绍使用MyBatis进行数据库关联查询的具体步骤,包括配置环境、定义模型类、实现Mapper接口及XML映射文件,最后通过测试类验证查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.导入Mybatis和Mysql相关jar包

2.创建数据库Mybatis,并创建User表(包含id、name、age、bumenid四个字段)和Teacher表(包含id、Teachername、userid两个字段)。

3.创建Mybatis的配置文件conf.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>  
    <!-- 对事务的管理和连接池的配置 --> 
     <!-- development :开发模式 -->
      <!--  work:工作模式 -->
    <environments default="development">  
        <environment id="development">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="com.mysql.jdbc.Driver" />  
                <property name="url" value="jdbc:mysql://localhost:3306/Mybatis" />  
                <property name="username" value="root" />  
                <property name="password" value="" />  
            </dataSource>  
        </environment>  
    </environments>  
    <!-- mapping 文件路径配置 -->  
   <mappers>  
       <!--  <mapper resource="com/zw/mybatis/studentsMapper.xml" />  --> 
      <!--  <mapper class="com.zw.mybatis.StudentsMapper" /> -->
      <mapper resource="com/zw/mybatis/Mapper/UserMapper.xml" /> 
    </mappers>  
</configuration>

4.创建2个model类

User

package com.zw.mybatis.model;

public class User {
 private int id;
 private String name;
 private int age;
 private int bumenid;
 private Bumen bumen;
 //关联表查询的关键
 private Teacher teacher;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public int getBumenid() {
	return bumenid;
}
public void setBumenid(int bumenid) {
	this.bumenid = bumenid;
}
public User(int id, String name, int age, int bumenid) {
	super();
	this.id = id;
	this.name = name;
	this.age = age;
	this.bumenid = bumenid;
}
public User() {
	super();
}
public Bumen getBumen() {
	return bumen;
}
public void setBumen(Bumen bumen) {
	this.bumen = bumen;
}
public Teacher getTeacher() {
	return teacher;
}
public void setTeacher(Teacher teacher) {
	this.teacher = teacher;
}
 
}

Teacher

package com.zw.mybatis.model;

public class Teacher {
private int id;
private String Teachername;
private int userid;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getTeachname() {
	return Teachername;
}
public void setTeachname(String teachname) {
	Teachername = teachname;
}
public int getUserid() {
	return userid;
}
public void setUserid(int userid) {
	this.userid = userid;
}
public Teacher(int id, String teachname, int userid) {
	super();
	this.id = id;
	Teachername = teachname;
	this.userid = userid;
}
public Teacher() {
	super();
}

}

5.创建UserMapper接口和UserMapper.xml

UserMapper接口

package com.zw.mybatis.model;

import java.util.List;

public interface UserMapper {
 User selectnameandbumennamebyid(int userid);
 List<User> selectnameandteachnamebyid(int userid);
}

UserMapper.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.zw.mybatis.model.UserMapper">
	<select id="selectnameandteachnamebyid" parameterType="int" resultMap="newselectMap">
	select b.Teachername,a.name from User a,Teacher b where a.id=b.userid and a.id=#{0}
	</select>
	<resultMap type="com.zw.mybatis.model.User" id="newselectMap">
	<result property="name" column="name" />
	<collection property="teacher" Oftype="com.zw.mybatis.model.Teacher">
	<result property="Teachername" column="Teachername" />
	</collection>
	</resultMap>
</mapper>
6.测试类

package com.zw.mybatis.Test;

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.zw.mybatis.model.User;
import com.zw.mybatis.model.UserMapper;

public class UserTest {

	public static void main(String[] args) {
		String resourse = "conf.xml";
		InputStream is = UserTest.class.getClassLoader().getResourceAsStream(resourse);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		SqlSession session = factory.openSession(true);
		UserMapper sm=session.getMapper(UserMapper.class);
	    List<User> user=  sm.selectnameandteachnamebyid(1);
		System.out.println("姓名:"+user.get(0).getName()+"  老师名字:"+user.get(0).getTeacher().getTeachname());
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值