asp.net网站开发四酷全书小程序第三方平台
asp.net网站开发四酷全书,小程序第三方平台,开发一个彩票网站多少钱,创业做网站 优帮云前面步骤
http://t.csdnimg.cn/IPXMY
1、解释
在数据库中#xff0c;单表的操作是最简单的#xff0c;但是在实际业务中最少也有十几张表#xff0c;并且表与表之间常常相互间联系#xff1b;
一对一、一对多、多对多是表与表之间的常见的关系。 一对一#xff1a;一张…前面步骤
http://t.csdnimg.cn/IPXMY
1、解释
在数据库中单表的操作是最简单的但是在实际业务中最少也有十几张表并且表与表之间常常相互间联系
一对一、一对多、多对多是表与表之间的常见的关系。 一对一一张表A中的一条记录只能对应另一张表B中的一条记录另一张表B中的一条记录也只能对应一张表A中的一条记录。如一个学生只能对应一张学生卡一张学生卡只能对应一个学生那么学生和学生卡就是一对一的关系 一对多一张表A中的一条记录可以对应另一张表B中的多条记录另一张表B中的一条记录只能对应一张表A中的一条记录。如一个班级对应多个学生一个学生只能对应一个班级所以班级表中的一条记录可以对应学生表的多条数据学生表中的一条记录只能对应班级表的一条数据 多对多的意思是一张表A中的一条记录可以对应另一张表B中的多条记录另一张表B中的一条记录也可以对应一张表A中的多条记录。如一个学生对应多个课程一个课程对应多个学生。多对多需要设计三张表。比如这里出来学生表和课程表还需要一张学生课程关联表。学生和课程的关系就存在课程表中。
2、操作
1、数据库中创建表格brand并插入数据
DROP TABLE IF EXISTS account;
CREATE TABLE account (id int NOT NULL AUTO_INCREMENT,name varchar(11) COLLATE utf8mb4_general_ci NOT NULL,money decimal(10,2) NOT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT3 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci;-- ----------------------------
-- Records of account
-- ----------------------------
INSERT INTO account VALUES (1, messi, 1000.00);
INSERT INTO account VALUES (2, pep, 1000.00);
select position,count(position) amount from users group by positionselect p.product_name productName,sum(p_r.quantity) prquantity,sum(s_r.quantity) srquantity from products p left join purchase_records p_r on p.product_idp_r.product_id left join sales_records s_r on p.product_ids_r.product_id where p.state1 group by p.product_id
order by srquantity desc limit 0,5;
DROP TABLE IF EXISTS brand;
CREATE TABLE brand (brand_id int NOT NULL AUTO_INCREMENT COMMENT 品牌编号,brand_name varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT 品牌名称,company_name varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT 所属公司名称,brand_idea varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 品牌理念,PRIMARY KEY (brand_id)
) ENGINEInnoDB AUTO_INCREMENT4 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci;-- ----------------------------
-- Records of brand
-- ----------------------------
INSERT INTO brand VALUES (1, 华为手机, 华为技术有限公司, Make It Possible);
INSERT INTO brand VALUES (2, 荣耀, 深圳市智信新信息技术有限公司, GO BEYOND);
INSERT INTO brand VALUES (3, 红米, 小米科技有限责任公司, 不顾一切的热爱);
2、com.entity中创建实体类Brand Data
public class Brand {//品牌编号private Integer brandId;//品牌名称private String brandName;//品牌所属公司private String companyName;//品牌理念private String brandIdea;//旗下手机列表private ListString phoneList;
} 3、com.entity中修改实体类Phone Data
public class Phone {
// 手机编号private Integer phoneId;
// 品牌编号
// private Integer brandId;//手机品牌private Brand brand;
// 手机型号private String modelNumber;
// 手机容量private Integer capacity;
} 4、实现查询手机信息及其所属品牌信息
xml方式修改方法selectAll对应的xml
写法一
resultMap idphoneMap typephoneid columnphone_id propertyphoneId/idid columnmodel_number propertymodelNumber/idid columncapacity propertycapacity/idid columnbrand_id propertybrand.brandId/idid columnbrand_name propertybrand.brandName/idid columncompany_name propertybrand.companyName/idid columnbrand_idea propertybrand.brandIdea/id/resultMapselect idselectAll resultMapphoneMapSELECT * FROM phone p,brand bwhere p.brand_id b.brand_id/select 写法二
resultMap idphoneMap typephoneid columnphone_id propertyphoneId/idid columnmodel_number propertymodelNumber/idid columncapacity propertycapacity/id!-- property:当前实体Hero中的属性名称(private Hero hero)--!-- javaType:当前实体Hero中的属性类型(com.cqgcxy.entity.Hero)--association propertybrand javaTypecom.cqgcxy.entity.Brandid columnbrand_id propertybrandId/idid columnbrand_name propertybrandName/idid columncompany_name propertycompanyName/idid columnbrand_idea propertybrandIdea/id/association/resultMapselect idselectAll resultMapphoneMapSELECT * FROM phone p,brand bwhere p.brand_id b.brand_id/select
注解方式
注意注解方式的mapper配置可以不用在配置mapper文件地址而是只配置包的路径。 写法一修改PhoneMapper接口中selectAll方法
Select(SELECT * FROM phone p,brand b where p.brand_id b.brand_id)Results({Result(column phone_id,property phoneId),Result(column model_number,property modelNumber),Result(column capacity,property capacity),Result(column brand_id,property brand.brandId),Result(column brand_name,property brand.brandName),Result(column company_name,property brand.companyName),Result(column brand_idea,property brand.brandIdea)})ListPhone selectAll(); 写法二
创建并编写BrandMapper接口
public interface BrandMapper {Select(SELECT * FROM brand WHERE brand_id #{brandId})Brand selectById(Long brandId);
} 修改PhoneMapper接口中selectAll方法
Select(SELECT * FROM phone)
Results({Result(column phone_id,property phoneId),Result(column model_number,property modelNumber),Result(column capacity,property capacity),Result(column brand_id,property brand,javaType Brand.class,one One(selectcom.dao.BrandMapper.selectById))
})
ListPhone selectAll(); 调用测试类中MybatisMapperTest中selectAllTest方法测试 5、实现查询品牌信息及其旗下的手机信息
BrandMapper接口中添加抽象方法selectAll
ListBrand selectAll(); xml方式mapper文件夹中创建BrandMapper.xml并编写selectAll方法对应的sql
?xml version1.0 encodingutf-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.dao.BrandMapperresultMap idbrandMap typecom.entity.Brandid columnbrand_id propertybrandId/idresult columnbrand_name propertybrandName/resultresult columncompany_name propertycompanyName/resultresult columnbrand_idea propertybrandIdea/resultcollection propertyphoneList ofTypecom.entity.Phoneresult columnphone_id propertyphoneId/resultresult columnmodel_number propertymodelNumber/resultresult columncapacity propertycapacity/result/collection/resultMapselect idselectAll resultMapbrandMapSELECT * FROM brand b LEFT JOIN phone pON p.brand_idb.brand_id/select
/mapper 测试
public class BrandMapperTest {Testpublic void selectAll() throws IOException {InputStream is Resources.getResourceAsStream(sqlMapConfig.xml);SqlSessionFactory sqLSessionFactory new SqlSessionFactoryBuilder().build(is);SqlSession sqlsession sqLSessionFactory.openSession();BrandMapper brandMapper sqlsession.getMapper(BrandMapper.class);ListBrand brands brandMapper.selectAll();brands.forEach(s-{System.out.println(s);});sqlsession.close();}
} 为了方便可以 注解方式
修改PhoneMapper接口中添加selectByBrandId方法
Select(SELECT * FROM phone WHERE brand_id #{brandId})Phone selectByBrandId(Integer brandId); 修改BrandMapper接口中selectAll方法 Select(SELECT * FROM brand)Results({Result(column brand_id,property brandId),Result(column brand_name,property brandName),Result(column company_name,property companyName),Result(column brand_idea,property brandIdea),Result(column brand_id,property phoneList,javaType List.class,many Many(select com.dao.PhoneMapper.selectByBrandId))})ListBrand selectAll(); 运行出现 Mybatis注解方式
lnsert实现新增
Update实现更新
Delete实现删除
Select实现查询
Result实现结果集封装
Results可以与Result一起使用封装多个结果集
One实现一对一结果集封装
Many实现一对多结果集封装
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85684.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!