JavaWeb小项目涉及的基础知识01

来源:互联网 发布:中巴经济走廊 知乎 编辑:程序博客网 时间:2024/05/07 03:08
             JavaWeb小项目涉及的基础知识

1 Mysql数据库建表

  一对多外键设置语法:alter table 从表 add constraint 约束名 foreign key (从表字段) reference 主表(字段)

如:

   主表:CREATE TABLE category (  cid varchar(32) NOT NULL,  cname varchar(20) DEFAULT NULL,  PRIMARY KEY (cid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;从表:CREATE TABLE product (  pid varchar(32) NOT NULL,  pname varchar(50) DEFAULT NULL,  market_price double DEFAULT NULL,  shop_price double DEFAULT NULL,  pimage varchar(200) DEFAULT NULL,  pdate date DEFAULT NULL,  is_hot int(11) DEFAULT NULL,  pdesc varchar(255) DEFAULT NULL,  pflag int(11) DEFAULT NULL,  cid varchar(32) DEFAULT NULL,  PRIMARY KEY (pid),  KEY sfk_0001 (cid),  CONSTRAINT sfk_0001 FOREIGN KEY (cid) REFERENCES category (cid)------------》》》》*外键语句*) ENGINE=InnoDB DEFAULT CHARSET=ut

2 JavaBean中对外键设置的问题

  根据面向对象的思想,从表中的外键一般使用主表JavaBean的对象,而且字段名不能同数据库中外键的字段名一致,因此一致的时候,BeanUtils封装的过程中会报类型转换异常。  主表JavaBean:
    ...    private String cid;    private String cname;    从表JavaBean外键传入Category类的对象:    ...    private String pid;    private String pname;    private double market_price;    private double shop_price;    private String pimage;rivate Date pdate ;    private int is_hot;    private String pdesc;    private int pflag;    private Category catagory;------->外键设置    ...3 查询所有时数据封装问题    从数据库查找所有的数据时,由于外键类型在JavaBean中为对象,因此用BeanUtils封装时会遗漏表中的Pid字段。解决方案:    采用左外连接查询的语句:    select * from 表 1 left outer join2 on 条件    如:       SELECT * FROM product LEFT OUTER JOIN category ON product.cid=category.cid    查询出主从表中所有的字段名,先对从表JavaBean对象进行封装,剩余cid字段,然后对主表JavaBean对象进行封装,然后通过set方法将封装好的主表JavaBean对象添加到从表里,完成查询。    代码:``QueryRunner qr = new QueryRunner(C3p0Utils.getDs()); String sql ="SELECT * FROM product LEFT OUTER JOIN    category ON product.cid=category.cid;" List<Map<String,  Object>> list = qr.query(sql, new   MapListHandler());    List<Product> ps = new ArrayList<>();        for (Map<String, Object> ml : list) {            Product p = new Product();            BeanUtils.populate(p, ml);            Category c = new Category();            BeanUtils.populate(c, ml);            p.setCatagory(c);            ps.add(p);

`

原创粉丝点击