当前位置: 首页 > news >正文

做网站小程序多少钱网络营销的目的和意义

做网站小程序多少钱,网络营销的目的和意义,dw网页设计作业成品源代码,国外优秀网站模板文章目录 问题简述场景描述问题描述问题原因解决办法 问题简述 笔者在使用 MyBatis 进行一对多查询的时候遇到一个奇怪的问题。对于笔者的一对多的查询结果#xff0c;出现了这样的一个现象#xff1a;原来每个组里有多个元素#xff0c;查询目标是查询所查的组#xff0c;… 文章目录 问题简述场景描述问题描述问题原因解决办法 问题简述 笔者在使用 MyBatis 进行一对多查询的时候遇到一个奇怪的问题。对于笔者的一对多的查询结果出现了这样的一个现象原来每个组里有多个元素查询目标是查询所查的组以及每个组中的元素。但查询的结果却是变成了这样每组元素变得只有一个且总组数与元素数总数相等。举个例子假设一共有 3 个组每组 4 个元素。而现在的查询结果却是显示出了 12 个组每组 1 个元素。 场景描述 笔者原来的表的情况比这要复杂很多这里为了便于说明简单抽象出这样一个情景。数据库中有很多用户User每个用户有他的好友分组Folder每个分组下面有该用户的好友Contact。现在需要查找这个用户所有的分组及好友返回的数据结构需要是一个一个 List 分组且一个分组中包含一个 List 好友。List 指的是 Java 的一个内置的数据结构。 User 表建表示例代码如下 CREATE TABLE User (id VARCHAR(64) NOT NULL,name VARCHAR(64) NOT NULL,# ...为了简化说明此表省略其它字段...PRIMARY KEY (id) ); Folder 表建表示例代码如下 CREATE TABLE Folder (id VARCHAR(64) NOT NULL,userId VARCHAR(64) NOT NULL,name VARCHAR(64) NOT NULL,# ...为了简化说明此表省略其它字段...PRIMARY KEY (userId, id),# 因为上面的是复合主键所以自动创建的是联合索引而其它表的外键引用需要的是单个索引INDEX idIndex (id),FOREIGN KEY (userId) REFERENCES User (id) ); Contact 表建表示例代码如下 CREATE TABLE Contact (id VARCHAR(64) NOT NULL,# 表示此联系人属于谁的好友userId VARCHAR(64) NOT NULL,# 表示此联系人对应 User 中的 idlinkedUserId VARCHAR(64) NOT NULL,folderId VARCHAR(64) NOT NULL,# ...为了简化说明此表省略其它字段...PRIMARY KEY (userId, id),# 因为上面的是复合主键所以自动创建的是联合索引而其它表的外键引用需要的是单个索引INDEX idIndex (id),# 同一个用户不能拥有两个相同 ID 的 ContactUNIQUE (userId, linkedUserId),# 当复合主键成为外键时必须整个复合主键一起作为外键不能只引用复合主键其中的某个属性FOREIGN KEY (userId) REFERENCES Folder (userId),FOREIGN KEY (folderId) REFERENCES Folder (id),FOREIGN KEY (linkedUserId) REFERENCES User (id) );建表示意图如下 查询之后的 Java 数据结构如下 Getter Setter ToString NoArgsConstructor AllArgsConstructor EqualsAndHashCode(callSuper false) Accessors(chain true) public class FolderWithContacts {private Folder folder;private ListContact contacts; }其中 Setter Getter ToString NoArgsConstructor AllArgsConstructor EqualsAndHashCode(callSuper false) Accessors(chain true) public class Folder {private String id;private String userId;private String name; }Setter Getter ToString NoArgsConstructor AllArgsConstructor EqualsAndHashCode(callSuper false) Accessors(chain true) public class Contact {private String id;private String userId;private String linkedUserId;private String folderId; }DAO 类代码如下 public interface ContactDao {ListFolderWithContacts getFolderWithContacts(String userId); }?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespaceXXX.xxx.ContactDaoresultMap idfolderResultMap typeXXX.xxx.Folder!-- property 指的是 Java 的字段名column 指的是 SQL 的属性名 --id propertyid columnfolder_id/id propertyuserId columnfolder_user_id/result propertyname columnfolder_name//resultMapresultMap idcontactResultMap typeXXX.xxx.Contactid propertyid columncontact_id/id propertyuserId columncontact_user_id/result propertyfolderId columncontact_folder_id/result propertyname columncontact_name//resultMapresultMap idfolderWithContactsResultMap typeXXX.xxx.FolderWithContacts!-- association 表示这是一个普通 Java 对象而不是 Java 内置类型 --association propertyfolder resultMapfolderResultMap/!-- collection 表示这是一个 Java 集合。javaType 指的是 Java 集合的类型 --collection propertycontacts javaTypejava.util.ArrayList resultMapcontactResultMap//resultMapselect idgetFolderWithContacts resultMapfolderWithContactsResultMapSELECT Folder.id AS folder_id,Folder.userId AS folder_user_id,Folder.name AS folder_name,Folder.sequence AS folder_sequence,Contact.id AS contact_id,Contact.userId AS contact_user_id,Contact.folderId AS contact_folder_id,Contact.name AS contact_name,Contact.description AS contact_descriptionFROM Contact,FolderWHERE Contact.folderId Folder.idAND Contact.userId #{userId}AND Folder.userId #{userId}ORDER BY folder_sequence ASC/select/mapper问题描述 以上就是笔者用于某个用户的好友分组及每个分组下的好友的示例代码。但使用上面的代码的查询会出现问题。如果一个用户有 3 个好友每组 4 个好友则上述代码的查询结果会变成该用户有 12 个好友分组每个分组 1 个好友。而且上面的整个查询过程在运行中都是正常的不会发生报错。而且返回结果的每个字段都没有出现 null 值。 可以看出上面的代码会导致无法区分好友与分组把好友当成分组返回了。 问题原因 是什么原因出现上述问题呢由于上面的整个查询过程都没有发生报错且返回数据没有 null 值。因此不会是笔者的语法编写出现问题。 于是笔者将上面的 SQL 单独在 MySQL 客户端命令行运行了一下运行输出是正常的确实是一个一对多查询的输出。一个一对多查询的输出输出结果的数量应该和元素总个数相等且同一个分组的所有元素关于这个分组的属性列的值应该也都是相等的。 这就说明并不是笔者 SQL 代码的问题所以问题出现在 MyBatis 对 MySQL 输出结果的解析上。笔者非常确定MyBatis 是肯定支持一对多查询的因此一定是笔者关于 MyBatis 的 mapper 文件的编写出现问题。 笔者之后在不断地建新的更基本的表进行一对多查询终于让笔者发现了问题所在。 MyBatis 对于多表查询要求组元素的字段必须是基本类型而笔者编程时非常喜欢隔离、封装、解耦擅自在上面将组元素的字段封装成了一个单独的类然后把这个类的对象作为组元素的字段。在这种情况下虽然 MyBatis 注入数据没有出问题但它却没能识别出这是一对多查询的数据因此将其当成一对一的数据来注入了。 可以看出笔者在上面使用了 association.../ 来映射一个 Java 对象因此引发了上述问题。 解决办法 知道原因就好办了。可以直接将上面类 Folder 的字段合并在类 FolderWithContacts然后去掉类 Folder。 改进后的相关代码如下 Getter Setter ToString NoArgsConstructor AllArgsConstructor EqualsAndHashCode(callSuper false) Accessors(chain true) public class FolderWithContacts {private String id;private String userId;private String name;private ListContact contacts; }?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespaceXXX.xxx.ContactDaoresultMap idcontactResultMap typeXXX.xxx.Contactid propertyid columncontact_id/id propertyuserId columncontact_user_id/result propertyfolderId columncontact_folder_id/result propertyname columncontact_name//resultMapresultMap idfolderWithContactsResultMap typeXXX.xxx.FolderWithContactsid propertyid columnfolder_id/id propertyuserId columnfolder_user_id/result propertyname columnfolder_name/!-- collection 表示这是一个 Java 集合。javaType 指的是 Java 集合的类型 --collection propertycontacts javaTypejava.util.ArrayList resultMapcontactResultMap//resultMapselect idgetFolderWithContacts resultMapfolderWithContactsResultMapSELECT Folder.id AS folder_id,Folder.userId AS folder_user_id,Folder.name AS folder_name,Folder.sequence AS folder_sequence,Contact.id AS contact_id,Contact.userId AS contact_user_id,Contact.folderId AS contact_folder_id,Contact.name AS contact_name,Contact.description AS contact_descriptionFROM Contact,FolderWHERE Contact.folderId Folder.idAND Contact.userId #{userId}AND Folder.userId #{userId}ORDER BY folder_sequence ASC/select/mapper现在这段代码运行起来查询到的数据就是正常的了。
http://www.w-s-a.com/news/366356/

相关文章:

  • 桓台网站建设公司首钢建设二建设公司网站
  • 网站建设添加背景命令前端如何优化网站性能
  • 设置网站域名中山画册设计公司
  • 三更app下载网站东莞网站制作公
  • 做图书馆网站模板网站建设文化策划方案
  • 惠州城乡住房建设厅网站服装设计自学零基础
  • 网站建设常态化工作机制广州骏域网络
  • h5婚纱摄影网站模板wordpress 显示下列项目
  • 广告网站推广销售北京最新消息发布
  • 完整网站源码asp拨打12355可以找团员密码吗
  • 北京有多少家网站怎么自己在百度上做网站
  • 怎样围绕网站专题发展来做ppt网站建设回龙观
  • 网站配置服务Wordpress红色网站源码
  • 外贸网站建设内容包括软件开发公司流程
  • 做中医药网站有前景吗企业网站优化公司
  • 四川建设设计公司网站海南澄迈县
  • 邳州做网站梵克雅宝项链官网价格图片
  • dede网站收录滦平县建设局网站
  • 上海网站建设开发公注册公司要求什么条件
  • 安徽汽车网网站建设wordpress 知乎
  • 网站建设的功能都需要有哪些在线平台
  • 湖南岳阳网站开发网络公司石家庄做网站的公司哪个好
  • 西安市做网站的公司门户网站对应序号是什么
  • 太原网站域名开发什么是网页界面设计
  • 做产品类网站有哪些做一百度网站吗
  • 在线视频网站建设国外最新创意产品网站有哪些方面
  • 在一个网站下建设多个子网站宣传册画册设计公司
  • 潍坊网站建设公司排名网站建设预付
  • 手机和wap网站建设crm客户管理系统模板
  • 微商城网站建设市场唐山地方志网站建设