需要关联四个表

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. 自学电脑游戏第三天(Swing组件)

    Swing组件 1.按钮(Jbutton) 示例:选择用户所喜欢的城市. import java.awt.*; import java.awt.event.*; import javax.swing. ...

  2. input输入框内容变化实时监听

    js实现的文本框内容发生改变立马触发事件简单介绍:本章节介绍一下如何在文本框的内容发生变化的时候,立马触发一个事件执行响应的操作,而不是像是keydown或者keyup事件一样,只能够检测通过键盘输入 ...

  3. oracle中表记录被另一个用户锁住

    应用场景 在查询oracle表时,提示表记录被另一个用户锁住了 有可能是在使用了pl/sql工具后修改某个表记录时,加锁,或者发生故障异常退出,下次登录进去修改不了 查询锁 --查看数据库的锁的来源. ...

  4. 使用pycharm开发web——django2.1.5(四)视图和模板相关

    刘老师说这块很重要..... 应该是很重要,大概看了一下,这里面关于views中函数作用,大概看来可能就是相应请求,传入数据和跳转,基本功能上貌似这些框架都差不多吧(其实我并没用过3个框架以上.... ...

  5. AtCoder M-SOLUTIONS 2019 Task E. Product of Arithmetic Progression

    problem link Official editorial: code: int main() { #if defined LOCAL && !defined DUIPAI ifs ...

  6. SpringBoot以WAR包部署遇到的坑---集合贴

    ⒈忽略tomcat的context-path 方式一: 停止tomcat服务,删除tomcat安装目录的webapps目录下的ROOT目录,将打成的WAR包重命名为ROOT.war,重启tomcat服 ...

  7. PHP学习之迭代生成器

    生成器的核心是一个yield关键字,一个生成器函数看起来像一个普通的函数,不同的是.普通函数返回一个值,而一个生成器可以yield生成许多它所需要的值.生成器函数被调用时,返回的是一个可以被遍历的对象 ...

  8. OBB碰撞

    OBB碰撞检测,坐标点逆时针 class OBBTest extends egret.DisplayObjectContainer { private obb1:OBB; private obb2:O ...

  9. 【规律】A Rational Sequence

    题目描述 An infinite full binary tree labeled by positive rational numbers is defi ned by:• The label of ...

  10. Myatis中的OGNL和bind标签的结合用法

    1.MyBatis常用的OGNL e1 or e2 e1 and e2 e1 == e2,e1 eq e2 e1 != e2,e1 neq e2 e1 lt e2:小于 e1 lte e2:小于等于, ...