使用Mybatis实现数据库一对多查询

该博客详细介绍了如何使用Mybatis进行数据库一对多查询的实现过程,包括创建相关数据表、定义实体类、编写映射文件以及配置主配置文件,并通过测试类验证查询效果。

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

首先创建数据表数据表格式如下:

CREATE TABLE `pser` (`id` int(11) NOT NULL AUTO_INCREMENT,`phon` varchar(255) DEFAULT NULL,`mobel` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`))

CREATE TABLE `uost` ( `uost_id` int(11) NOT NULL AUTO_INCREMENT,`pser_id` int(11) DEFAULT NULL,`name` varchar(255) DEFAULT NULL,`Shijian` varchar(255) DEFAULT NULL, PRIMARY KEY (`uost_id`)
)

然后创建两个实体类个:

pser:
package com.zhiyuan.bean;

import java.io.Serializable;
import java.util.List;

public class Pser implements Serializable {
	public int id;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getPhon() {
		return phon;
	}
	public void setPhon(String phon) {
		this.phon = phon;
	}
	public String getMobel() {
		return mobel;
	}
	public void setMobel(String mobel) {
		this.mobel = mobel;
	}
	public List<Uost> getUost() {
		return Uost;
	}
	public void setUost(List<Uost> uost) {
		Uost = uost;
	}
	public String phon;
	public String mobel;
	public List<Uost> Uost;
}
uost:
package com.zhiyuan.bean;

import java.io.Serializable;

public class Uost implements Serializable {
	public int Uost_id;
	public int Pser_id;
	public String name;
	public int getUost_id() {
		return Uost_id;
	}
	public void setUost_id(int uost_id) {
		Uost_id = uost_id;
	}
	public int getPser_id() {
		return Pser_id;
	}
	public void setPser_id(int pser_id) {
		Pser_id = pser_id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public String getShijian() {
		return Shijian;
	}
	public void setShijian(String shijian) {
		Shijian = shijian;
	}

	public String Shijian;
	
}

编写Pser对应的映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.zhiyuan">
	
	<resultMap type="Pser" id="resultPserMap">
	 <result property="id" column="user_id"/>
	<result property="phon" column="phon"/>
	<result property="mobel" column="mobel"/>
	<collection property="uost" ofType="com.zhiyuan.bean.Uost" column="pser_id">
    <id property="uost_id" column="uost_id" javaType="int" jdbcType="INTEGER"/>    
    <result property="name" column="name" javaType="string" jdbcType="VARCHAR"/>
   <result property="Shijian" column="Shijian" javaType="string" jdbcType="VARCHAR"/> 
	</collection>
	</resultMap>
	<select id="getPser" resultMap="resultPserMap" parameterType="int">
	SELECT p.*,u.*
	FROM pser p,uost u
	WHERE p.id=u.pser_id and p.id=#{id}
	</select>
</mapper>
编写config主配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD config 3.0//EN" "mybatis-3-config.dtd" >
<configuration>
<typeAliases>
<typeAlias alias="Pser" type="com.zhiyuan.bean.Pser"/>
<typeAlias alias="Uost" type="com.zhiyuan.bean.Uost"/>
</typeAliases>
<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://127.0.0.1:3306/loop" />
				<property name="username" value="root" />
				<property name="password" value=" " />
			</dataSource>
		</environment>
	</environments>

	<mappers>
	
		<mapper resource="com/zhiyuan/bean/Pser.xml" />
	</mappers>


</configuration>
编写测试类:
package com.zhiyuan.mapp;

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

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.zhiyuan.bean.Pser;
import com.zhiyuan.bean.Uost;

public class Mapper {
	
	public static SqlSessionFactory sql;
	public static Reader rea;
	static{
		try {
			//读取xml配置文件
			rea=Resources.getResourceAsReader("config.xml");
			//获取SqlSessionFactory对象
			sql=new SqlSessionFactoryBuilder().build(rea);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	public static void main(String[] args) {
	//获取sqlsession对象
		SqlSession sqll=sql.openSession();
	int id=1;
	//执行xml配置里面的sql语句并传入条件查询的值,并将查询结果赋值给op
	Pser op=sqll.selectOne("com.zhiyuan.getPser", id);
	//输出表中phon的值(由于懒所以只输出数据表里的一个数据作为示范@^_^@)
	System.out.println(op.getPhon());
	//将pser的对象获取的uost记录返回传给List集合
	List<Uost> uo=op.Uost;
	//将集合里的uost值一一输出
	for (Uost uoo: uo) {
		//输出Uost表中name的值
		System.out.println(uoo.getName());
	}
	
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值