需要关联四个表

select g.*,b.name brname,s.bid,s.sname,bi.name biname  from T_GOODS g

left join T_brand b on b.id = g.brandid

inner join T_smallclass s on g.sid = s.sid 

inner join T_bigclass bi on bi.id = s.bid"

T_GOODS   商品表格

商品实体类

public class Goods {
public int id;
public String goodsname;
public double weight;
public double price;
public String color;
public int brandid;
public Date shangtime;
public int stock;
public int sid;
public BigClass bigclass;  //其实是大分类与小分类的实体类,写一个了,不允许这样,因为主键不清
public Brand brand;//其实是把品牌实体类写在商品实体类,后台需要

}

T_brand     品牌表格

品牌实体类

public class Brand {
private int id;
private String name;

}

T_smallclass  小分类表格

public class SmallClass {
private int id;
private String name;
public int bid;

}

T_bigclass   大分类表格

public class BigClass {
//大分类
private int id;
private String name;

}

//商品关联查询
public List<Goods> goodslist();

//商品关联查询

connection = DBUtil.getConnection();
String sql = "select g.*,b.name brname,s.bid,s.sname,bi.name biname "
+ " from T_GOODS g left join T_brand b on b.id = g.brandid"
+ " inner join T_smallclass s on g.sid = s.sid"
+ " inner join T_bigclass bi on bi.id = s.bid";
p = connection.prepareStatement(sql);
set = p.executeQuery();
List<Goods> list = new ArrayList<Goods>();
while(set.next()){
Goods goods = new Goods();
goods.setId(set.getInt("id"));
goods.setGoodsname(set.getString("goodsname"));
// goods.setBrandid(set.getInt("brandid"));
goods.setColor(set.getString("color"));
goods.setPrice(set.getDouble("price"));
goods.setShangtime(set.getDate("shangtime"));
// goods.setSid(set.getInt("sid"));
goods.setStock(set.getInt("stock"));
goods.setWeight(set.getDouble("weight"));
goods.setBrand(new Brand());
goods.getBrand().setId(set.getInt("brandid"));
goods.getBrand().setName(set.getString("brname"));
goods.setBigclass(new BigClass());
goods.getBigclass().setBid(set.getInt("bid"));
goods.getBigclass().setName(set.getString("biname"));
goods.getBigclass().setSid(set.getInt("sid"));
goods.getBigclass().setSname(set.getString("sname"));

//注意,这里的值不可以重复(写错了,把大分类和小分类写在一起了,应该分开)
list.add(goods);

}
return list;

其余都是一样

前台赋值问题

关于前台赋值,如果跨实体的话,先写进的实体,然后写远的,比如,goodslist.brand.name{brand是goods实体类里面的 Brand  品牌 . 品牌实体类的name值}(自己理解)

struts2之关联查询(5)的更多相关文章

  1. JDBC MySQL 多表关联查询查询

    public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...

  2. MYSQL基础操作之数据约束与关联查询

    一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...

  3. C#代码中实现两个表(DataTable)的关联查询(JOIN)

    之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便.近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横 ...

  4. Mybatis关联查询和数据库不一致问题分析与解决

    Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...

  5. Mysql多表表关联查询 inner Join left join right join

    Mysql多表表关联查询 inner Join left join right join

  6. YII2-数据库数据查询方法,关联查询with, joinWith区别和分页

    一.ActiveRecord 活动记录 1.with关联查询 例如,查询评论 $post = Post::find()->with('comments'); 等价于以下结果集 SELECT * ...

  7. Mybatis高级查询之关联查询

    learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resul ...

  8. Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询

    在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...

  9. [NHibernate]一对多关系(关联查询)

    目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...

随机推荐

  1. python进程池 使用Queue实现计数功能

    多进程中各个进程间相互隔离,进程间通信需要使用到通道. 多进程中使用Queue实现进程中通信 from multiprocessing import Process,Queue import time ...

  2. 《你必须知道的495个C语言问题》读书笔记之第1-2章:声明和初始化

    1. C标准中并没有精确定义数值类型的大小,但作了以下约束: (1) char类型可以存放小于等于127的值: (2) short int和int可以存放小于等于32767的值: (3) long i ...

  3. Spring mybatis源码篇章-Mybatis的XML文件加载

    通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-Mybatis主文件加载 前话 前文主要讲解了Mybatis的主文件加载方式,本文则分析不使用主文件加载方式 ...

  4. notepad++一次多行复制粘贴到对应位置

    NodePad++一次复制多行粘贴到对应位置 有时候要写sql,但是里面有很多字段要对应上,如果要自己一个字段一个字段的去写是在有点麻烦,是不是有更好的方法做到这件事呢? 要做这件事,首先分析下我们已 ...

  5. 后台返回数据为map集合,前端js处理方法

    当后台返回的数据不是json而是map集合的时候,前端js中处理就将其看作是一个数组,例如后台返回的代码入下: Map<String, String> result = new HashM ...

  6. 如何判断你的windows系统是32位还是64位?

    [学习笔记] 如 何判断你的windows系统是32位还是64位? java -version时,如果没有64就是32位的.eclipse.ini中如果没有64,就是32位的.但是我们的ini文件里面 ...

  7. (六)Spring 中的 JdbcTemplate

    目录 概念 配置数据库 创建 JdbcTemplate 对象 增删改查代码 概念 JdbcTemplate : 是 Spring 中对持久层(JDBC 技术)一个封装 : 使用起来和 Dbutuis ...

  8. Ural 1250 Sea Burial 题解

    目录 Ural 1250 Sea Burial 题解 题意 输入 题解 程序 Ural 1250 Sea Burial 题解 题意 给定一个\(n\times m\)的地图,\(.\)为水,\(\#\ ...

  9. Python简介以及入门

    一. Python简介 1. Python的诞生 Python的创始人是吉多·范罗苏姆(Guido van Rossum),荷兰人.1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯 ...

  10. opencv实现人脸识别(三) 训练图片模块

    现在我们已经拍好了需要训练的图片,接下来就是进行训练 流程图: 我们在这里用到了numpy库,NumPy是一个功能强大的Python库,主要用于对多维数组执行计算. 使用numpy的目的是减少pyth ...