SSM学习笔记(一)——多表联查

这篇博客记录了作者在使用SSM框架时遇到的多表联查问题及其解决方案。通过实例,作者展示了如何从Seorder、Seorderentry、Icitemcore三张表中获取所需数据并映射到页面上,强调了创建映射结果集的实体类的重要性。内容包括SQL语句的编写、DAO和Service层的实现,以及JSP页面的展示关键部分。
摘要由CSDN通过智能技术生成

在刚刚接触SSM的时候,最初遇到的难题便是多表联查的问题。mybatis由于他的特性一般情况下映射的结果与pojo(entity)实体类里面的属性都是一一对应的。所以如果是多张表联合查询然后返回结果集的话,由于存在pojo里面的属性不全的问题无法完成映射,因为这个问题纠结了2天。

找了许多的网站和例子也没有找到解决的方案,在一次偶然的尝试中发现了解决的方法,因此在这里做下笔记,作为留念。


需求:从Seorder,  Seorderentry,  Icitemcore获取数据显示到页面上

要求显示的数据

Seorder 表的 FBillNo

Seorderentry 表的 FMapNumber,FEntrySelfS0164

Icitemcore 表的 FNumber FShortNumbe FName

首先写sql语句

SeorderKDao.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="cn.gsp.dao.SeorderKDao">
	<sql id="seorderwhere">
		<where>
			<if test="FBillNo!=null and FBillNo!=''">
				and t1.FBillNo=#{FBillNo}
			</if>
			<if test="FMapNumber!=null and FMapNumber!=''">
				and t2.FMapNumber=#{FMapNumber}
			</if>
			<if test="FEntrySelfS0164!=null and FEntrySelfS0164!=''">
				and t2.FEntrySelfS0164=#{FEntrySelfS0164}
			</if>
		</where>
	</sql>
	<select id="getByFBillNo" resultType="cn.gsp.pojo.SeorderK"  >
		SELECT
		t1.FBillNo,
		t2.FMapNumber,
		t2.FEntrySelfS0164,
		t3.FNumber,
		t3.FShortNumber,
		t3.FName
		FROM
		SEOrder t1
		inner join SEOrderEntry t2 on t1.FInterID=t2.FInterID
		inner join t_ICItemCore t3 on t2.FItemID=t3.FItemID
		<include refid="seorderwhere"></include>
	</select>
</mapper>
然后根据xml写出对应的dao接口,dao中的方法名字与xml中select的id要相同

SeorderKDao.java

package cn.gsp.dao;

import java.util.List;

import cn.gsp.pojo.SeorderK;

public interface SeorderKDao {
		/**
		 * 通过查询条件来查询数据
		 */
	public List<SeorderK&g
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值