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

现在门户网站建设还有人弄吗百度竞价排名是什么方式

现在门户网站建设还有人弄吗,百度竞价排名是什么方式,网站导航结构,王野天演员目录 一、概述 ( 1 ) 介绍 ( 2 ) 关联关系映射 ( 3 ) 关联讲述 二、一对一关联映射 2.1 数据库创建 2.2 配置文件 2.3 代码生成 2.4 编写测试 三、一对多关联映射 四 、多对多关联映射 给我们带来的收获 一、概述 ( 1 ) 介绍 关联关系映射是指在数据库中通过定义表之间的关联关系将多个表的数据进行关联查询和映射的过程。通过关联关系映射可以方便地获取相关联表的数据并将其映射到对应的实体类中。 Mybatis是一种Java持久层框架它提供了一种将数据库表和Java对象之间进行关联关系映射的方式。在Mybatis中可以通过配置文件或注解的方式定义表之间的关联关系并将查询结果映射到对应的Java对象中。通过Mybatis的关联关系映射可以方便地进行复杂的数据库查询操作。 在Mybatis中可以通过配置映射文件来实现关联关系的映射。通过定义实体类和映射文件可以将数据库中的多个表进行关联查询并将查询结果映射到实体类的属性上。 在进行数据库查询操作时通过关联查询获取到关联表中的相关数据并将其映射到实体类中的关联属性上。 总结来说关联关系映射是指通过配置映射文件将数据库中的关联表进行关联查询并将查询结果映射到实体类的关联属性上。通过扩展关联关系映射可以方便地进行复杂的数据库查询操作提高查询效率和简化数据操作的代码。 ( 2 )  关联关系映射 关联关系映射在Mybatis中主要通过三种方式实现一对一关联和一对多关联及多对多关联。 一对一关联 在一对一关联中两个表之间存在一对一的关系例如学生表和身份证表一个学生只有一个身份证而一个身份证也只属于一个学生。在Mybatis中可以通过在实体类中定义关联属性然后在映射文件中使用association标签来定义关联关系。通过配置映射关系可以查询到学生表和身份证表的数据并将其映射到对应的实体类中。 一对多关联 在一对多关联中两个表之间存在一对多的关系例如部门表和员工表一个部门可以有多个员工而一个员工只属于一个部门。在Mybatis中可以通过在实体类中定义关联属性然后在映射文件中使用collection标签来定义关联关系。通过配置映射关系可以查询到部门表和员工表的数据并将其映射到对应的实体类中。 多对多关联 是指两个表之间存在多对多的关联关系即一个表的一条记录可以对应另一个表的多条记录反之亦然。在数据库中多对多关系通常需要通过中间表来实现。 在Mybatis中可以通过定义中间表来映射多对多关系。假设有两个表学生表和课程表一个学生可以选择多门课程而一门课程也可以被多个学生选择。为了映射这种多对多关系需要创建一个中间表例如选课表用来记录学生和课程的关联关系。 ( 3 ) 关联讲述 在关联关系映射中还可以使用嵌套查询和延迟加载等技术来优化查询性能。嵌套查询是指在查询主表数据时同时查询关联表的数据延迟加载是指在需要使用关联数据时才进行查询避免一次性查询所有关联数据。这些技术可以根据具体需求进行配置和使用。 在进行关联关系映射时可以使用不同的标签来配置不同的关联关系如association标签用于一对一关联collection标签用于一对多关联。通过配置映射关系可以根据具体需求查询到相关的数据并将其映射到实体类中。 总结来说关联关系映射是Mybatis中非常重要的特性之一关联关系映射是指通过配置映射文件将数据库中的关联表进行关联查询并将查询结果映射到实体类的关联属性上。通过扩展关联关系映射可以方便地进行复杂的数据库查询操作也方便地进行表之间的关联查询和映射操作提高了数据查询和操作的灵活性和效率及简化数据操作的代码。 二、一对一关联映射 这里进行一对一关联关系实例演示 这里的代码基于我博客文章中的 : Spring与Mybatis集成且Aop整合 2.1 数据库创建 创建名为 t_hibernate_book (书籍表) 数据表 创建名为 t_hibernate_book_category (书籍类别表) 数据表 其中名为 bid 的属性字段为 t_hibernate_book (书籍表) 的 bid(主键) 的外键 其中名为 cid 的属性字段为 t_hibernate_category (类别表) 的 category_id (主键) 的外键 创建名为 t_hibernate_category (类别表) 数据表 创建名为 t_hibernate_order (订单表) 数据表 创建名为 t_hibernate_order_item (订单详情表) 数据表 其中名为 order_id 的属性字段为 t_hibernate_order (订单表) 的 oid (主键) 的外键 2.2 配置文件  修改名为 generatorConfig.xml 的 配置文件修改后的所有代码如下 :  ?xml version1.0 encodingUTF-8 ? !DOCTYPE generatorConfiguration PUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtd generatorConfiguration!-- 引入配置文件 --properties resourcejdbc.properties/!--指定数据库jdbc驱动jar包的位置--classPathEntry locationD:\\temp\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar/!-- 一个数据库一个context --context idinfoGuardian!-- 注释 --commentGeneratorproperty namesuppressAllComments valuetrue/!-- 是否取消注释 --property namesuppressDate valuetrue/ !-- 是否生成注释代时间戳 --/commentGenerator!-- jdbc连接 --jdbcConnection driverClass${jdbc.driver}connectionURL${jdbc.url} userId${jdbc.username} password${jdbc.password}/!-- 类型转换 --javaTypeResolver!-- 是否使用bigDecimal false可自动转化以下类型Long, Integer, Short, etc. --property nameforceBigDecimals valuefalse//javaTypeResolver!-- 01 指定javaBean生成的位置 --!-- targetPackage指定生成的model生成所在的包名 --!-- targetProject指定在该项目下所在的路径 --javaModelGenerator targetPackagecom.CloudJun.modeltargetProjectsrc/main/java!-- 是否允许子包即targetPackage.schemaName.tableName --property nameenableSubPackages valuefalse/!-- 是否对model添加构造函数 --property nameconstructorBased valuetrue/!-- 是否针对string类型的字段在set的时候进行trim调用 --property nametrimStrings valuefalse/!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法只有构造方法 --property nameimmutable valuefalse//javaModelGenerator!-- 02 指定sql映射文件生成的位置 --sqlMapGenerator targetPackagecom.CloudJun.mappertargetProjectsrc/main/java!-- 是否允许子包即targetPackage.schemaName.tableName --property nameenableSubPackages valuefalse//sqlMapGenerator!-- 03 生成XxxMapper接口 --!-- typeANNOTATEDMAPPER,生成Java Model 和基于注解的Mapper对象 --!-- typeMIXEDMAPPER,生成基于注解的Java Model 和相应的Mapper对象 --!-- typeXMLMAPPER,生成SQLMap XML文件和独立的Mapper接口 --javaClientGenerator targetPackagecom.CloudJun.mappertargetProjectsrc/main/java typeXMLMAPPER!-- 是否在当前路径下新加一层schema,false路径com.oop.eksp.user.model true:com.oop.eksp.user.model.[schemaName] --property nameenableSubPackages valuefalse//javaClientGenerator!-- 配置表信息 --!-- schema即为数据库名 --!-- tableName为对应的数据库表 --!-- domainObjectName是要生成的实体类 --!-- enable*ByExample是否生成 example类 --!--table schema tableNamet_book domainObjectNameBook--!--enableCountByExamplefalse enableDeleteByExamplefalse--!--enableSelectByExamplefalse enableUpdateByExamplefalse--!--lt;!ndash; 忽略列不生成bean 字段 ndash;gt;--!--lt;!ndash; ignoreColumn columnFRED / ndash;gt;--!--lt;!ndash; 指定列的java数据类型 ndash;gt;--!--lt;!ndash; columnOverride columnLONG_VARCHAR_FIELD jdbcTypeVARCHAR / ndash;gt;--!--/table--table schema tableNamet_hibernate_book domainObjectNameHBookenableCountByExamplefalse enableDeleteByExamplefalseenableSelectByExamplefalse enableUpdateByExamplefalse/tabletable schema tableNamet_hibernate_category domainObjectNameCategoryenableCountByExamplefalse enableDeleteByExamplefalseenableSelectByExamplefalse enableUpdateByExamplefalse/tabletable schema tableNamet_hibernate_book_category domainObjectNameHBookCategoryenableCountByExamplefalse enableDeleteByExamplefalseenableSelectByExamplefalse enableUpdateByExamplefalse/tabletable schema tableNamet_hibernate_order domainObjectNameOrderenableCountByExamplefalse enableDeleteByExamplefalseenableSelectByExamplefalse enableUpdateByExamplefalse/tabletable schema tableNamet_hibernate_order_item domainObjectNameOrderItemenableCountByExamplefalse enableDeleteByExamplefalseenableSelectByExamplefalse enableUpdateByExamplefalse/table/context /generatorConfiguration2.3 代码生成 配置好 generatorConfig.xml 的配置文件后进行自动生成代码操作如图 :  代码生成后就会出现以下的实体类对象配置文件接口类如图 :    然后将每个实体类对象里面重写一下toString()方法 2.4 编写测试 创建一个 名为 OrderItemVo 的类继承OrderItem类及属性有Order对象 package com.CloudJun.vo;import com.CloudJun.model.Order; import com.CloudJun.model.OrderItem;/*** author CloudJun* create  2023-08-26 15:54*/ public class OrderItemVo extends OrderItem {private Order order;public Order getOrder() {return order;}public void setOrder(Order order) {this.order order;}}在自动生成的OrderItemMapper.xml配置文件中进行增加以下配置 resultMap idOrderItemMap typecom.CloudJun.vo.OrderItemVo result columnorder_item_id propertyorderItemId /resultresult columnproduct_id propertyproductId /resultresult columnquantity propertyquantity /resultresult columnoid propertyoid /resultassociation propertyorder javaTypecom.CloudJun.model.Orderresult columnorder_id propertyorderId /resultresult columnorder_no propertyorderNo /result/association /resultMap select idselectByBiid resultMapOrderItemMap parameterTypejava.lang.Integer SELECT * FROMt_hibernate_order o ,t_hibernate_order_item oiWHERE o.order_id oi.oidAND oi.order_item_id #{oiid} /select 在自动生成的 OrderItemMapper 接口中进行增加以下代码 OrderItemVo selectByBiid(Param(oiid) Integer oiid); 创建一个接口名为 : OrderItemBiz 接口 package com.CloudJun.biz;import com.CloudJun.model.OrderItem; import com.CloudJun.vo.OrderItemVo; import org.apache.ibatis.annotations.Param;public interface OrderItemBiz {OrderItemVo selectByBiid(Integer oiid);} 实现以上创建的接口创建一个实现了名为 OrderItemBizImpl 类 package com.CloudJun.biz.impl;import com.CloudJun.biz.OrderItemBiz; import com.CloudJun.mapper.OrderItemMapper; import com.CloudJun.vo.OrderItemVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** author CloudJun* create  2023-08-26 16:23*/ Service public class OrderItemBizImpl implements OrderItemBiz {Autowiredprivate OrderItemMapper orderItemMapper;Overridepublic OrderItemVo selectByBiid(Integer oiid) {return orderItemMapper.selectByBiid(oiid);} }创建一个测试类 名为 Test01 用来进行方法测试 package com.CloudJun.biz.impl;import com.CloudJun.biz.OrderBiz; import com.CloudJun.biz.OrderItemBiz; import com.CloudJun.vo.OrderItemVo; import com.CloudJun.vo.OrderVo; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/*** author CloudJun* create  2023-08-26 15:03*/ RunWith(SpringJUnit4ClassRunner.class) ContextConfiguration(locations{classpath:spring-context.xml}) public class Test01 {Autowiredprivate OrderItemBiz orderItemBiz;Beforepublic void setUp() throws Exception {}Afterpublic void tearDown() throws Exception {}Testpublic void selectByBiid() {OrderItemVo orderItemVo orderItemBiz.selectByBiid(27);System.out.println(orderItemVo);System.out.println(orderItemVo.getOrder());}} 执行测试类中selectByBiid()的方法结果如图 :  三、一对多关联映射 创建一个 名为 OrdeVo 的类继承Order类及属性有ListOrderItem集合 用来存储查询到的OrderItem对象因为是一对多所有查询出有多个对象 package com.CloudJun.vo;import com.CloudJun.model.Order; import com.CloudJun.model.OrderItem; import com.CloudJun.utils.PageBean;import java.util.ArrayList; import java.util.List;/*** author CloudJun* create  2023-08-26 14:54*/ public class OrderVo extends Order {private ListOrderItem orderItems new ArrayListOrderItem();public ListOrderItem getOrderItems() {return orderItems;}public void setOrderItems(ListOrderItem orderItems) {this.orderItems orderItems;}}在自动生成的 OrderMapper.xml 配置文件中增加以下配置 resultMap idOrderVoMap typecom.CloudJun.vo.OrderVoresult columnorder_id propertyorderId /resultresult columnorder_no propertyorderNo /resultcollection propertyorderItems ofTypecom.CloudJun.model.OrderItemresult columnorder_item_id propertyorderItemId /resultresult columnproduct_id propertyproductId /resultresult columnquantity propertyquantity /resultresult columnoid propertyoid /result/collection/resultMapselect idselectByOid resultMapOrderVoMap parameterTypejava.lang.Integer SELECT * FROMt_hibernate_order o ,t_hibernate_order_item oiWHERE o.order_id oi.oidAND o.order_id #{oid}/select 在自动生成的 OrderMapper接口中进行增加以下代码 OrderVo selectByOid(Param(oid) Integer oid); 创建一个接口名为 : OrderBiz 接口 package com.CloudJun.biz;import com.CloudJun.vo.OrderVo;public interface OrderBiz {OrderVo selectByOid(Integer oid);} 在实现以上 OrderBiz 接口创建一个实现类名为 OrderBizImpl  package com.CloudJun.biz.impl;import com.CloudJun.biz.OrderBiz; import com.CloudJun.mapper.OrderMapper; import com.CloudJun.vo.OrderVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** author CloudJun* create  2023-08-26 15:06*/ Service public class OrderBizImpl implements OrderBiz {Autowiredprivate OrderMapper orderMapper;Overridepublic OrderVo selectByOid(Integer oid) {return orderMapper.selectByOid(oid);} }在测试类( Test01 )中增加以下测试方法及接口 Autowiredprivate OrderBiz orderBiz;Testpublic void selectByOid() {OrderVo orderVo orderBiz.selectByOid(7);System.out.println(orderVo);orderVo.getOrderItems().forEach(System.out::println);} 执行其中的方法进行测试结果为如图  :   四 、多对多关联映射 在自动生成的 HBookMapper.xml 配置文件中增加以下配置 resultMap idHBookVoMap typecom.CloudJun.vo.HBookVo result columnbook_id propertybookId/resultresult columnbook_name propertybookName/resultresult columnprice propertyprice/resultcollection propertycategories ofTypecom.CloudJun.model.Categoryresult columncategory_id propertycategoryId/resultresult columncategory_name propertycategoryName/result/collection/resultMapselect idselectByBookId resultMapHBookVoMap parameterTypejava.lang.Integer SELECT * FROMt_hibernate_book b,t_hibernate_book_category bc ,t_hibernate_category cWHERE b.book_id bc.bidAND bc.cid c.category_idAND b.book_id #{bid}/select 在自动生成的 HBookMapper 接口 中增加以下方法 HBookVo selectByBookId(Param(bid) Integer bid); 创建一个接口名为 HBookBiz  package com.CloudJun.biz;import com.CloudJun.vo.HBookVo; import org.apache.ibatis.annotations.Param;public interface HBookBiz {HBookVo selectByBookId(Param(bid) Integer bid);} 在实现以上 HBookBiz 接口创建一个实现类名为 HBookBizImpl  package com.CloudJun.biz.impl;import com.CloudJun.biz.HBookBiz; import com.CloudJun.mapper.HBookMapper; import com.CloudJun.vo.HBookVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** author CloudJun* create  2023-08-26 17:43*/ Service public class HBookBizImpl implements HBookBiz {Autowiredprivate HBookMapper hBookMapper;Overridepublic HBookVo selectByBookId(Integer bid) {return hBookMapper.selectByBookId(bid);}}在测试类( Test01 )中增加以下测试方法及接口 Autowiredprivate HBookBiz hbookBiz;Testpublic void selectByBookId() {HBookVo hBookVo hbookBiz.selectByBookId(8);System.out.println(hBookVo);hBookVo.getCategories().forEach(System.out::println);} 执行其中的方法进行测试结果为如图  :   在自动生成的 CategoryMapper.xml 配置文件中增加以下配置 resultMap idCategoryVoMap typecom.CloudJun.vo.CategoryVoresult columncategory_id propertycategoryId/resultresult columncategory_name propertycategoryName/resultcollection propertybooks ofTypecom.CloudJun.model.HBookresult columnbook_id propertybookId/resultresult columnbook_name propertybookName/resultresult columnprice propertyprice/result/collection/resultMapselect idselectByCategoryId resultMapCategoryVoMap parameterTypejava.lang.Integer SELECT * FROMt_hibernate_book b,t_hibernate_book_category bc ,t_hibernate_category cWHERE b.book_id bc.bidAND bc.cid c.category_idAND c.category_id #{cid}/select 在自动生成的 CategoryMapper 接口 中增加以下方法 CategoryVo selectByCategoryId(Param(cid) Integer cid); 创建一个接口名为 CategoryBiz  package com.CloudJun.biz;import com.CloudJun.vo.CategoryVo;public interface CategoryBiz {CategoryVo selectByCategoryId( Integer cid);} 在实现以上 CategoryBiz 接口创建一个实现类名为 CategoryBizImpl  package com.CloudJun.biz.impl;import com.CloudJun.biz.CategoryBiz; import com.CloudJun.mapper.CategoryMapper; import com.CloudJun.vo.CategoryVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** author CloudJun* create  2023-08-26 17:56*/ Service public class CategoryBizImpl implements CategoryBiz {Autowiredprivate CategoryMapper categoryMapper;Overridepublic CategoryVo selectByCategoryId(Integer cid) {return categoryMapper.selectByCategoryId(cid);}}在测试类( Test01 )中增加以下测试方法及接口  Autowiredprivate CategoryBiz categoryBiz; Testpublic void selectByCategoryId() {CategoryVo categoryVo categoryBiz.selectByCategoryId(8);System.out.println(categoryVo);categoryVo.getBooks().forEach(System.out::println);} 执行其中的方法进行测试结果为如图  :    给我们带来的收获 学习Mybatis的关联关系映射可以带来以下收获和认识 1. 灵活的数据查询通过关联关系映射可以方便地进行多表关联查询获取到关联表中的相关数据。这样可以减少数据库查询的次数提高查询效率并且可以一次性获取到所有关联数据减少了后续数据操作的开销。2. 数据的一致性和完整性在进行关联关系映射时可以通过定义中间表和映射关系保证数据的一致性和完整性。在插入、更新和删除数据时需要同时维护中间表的数据以保证关联关系的正确性。3. 简化数据操作通过关联关系映射可以将关联表中的数据映射到实体类的关联属性上使得获取关联数据变得简单和直观。不需要手动编写复杂的SQL语句只需要通过配置映射文件就可以方便地获取到关联数据。4. 提高代码的可读性和可维护性通过Mybatis的关联关系映射可以将数据操作的逻辑和SQL语句分离使得代码更加清晰和易于理解。同时通过使用映射文件可以方便地修改和维护数据操作的逻辑提高代码的可维护性。 总结来说学习Mybatis的关联关系映射可以带来灵活的数据查询、数据的一致性和完整性、简化数据操作以及提高代码的可读性和可维护性等好处。通过掌握关联关系映射的知识可以更加有效地进行数据库操作和数据查询提高开发效率和代码质量。
http://www.pierceye.com/news/827188/

相关文章:

  • 房产网站建设的功能wordpress php7拓展
  • 做网站代码用什么软件天津建设工程信息网天津
  • 网站开发工程师前景怎么样怎么做自己的网站?
  • 井陉矿区网站建设做微商的网站
  • 办公室装修专业网站小程序免费制作平台有吗
  • 学生做兼职去哪个网站线上推广的渠道有哪些
  • 徐州网站的优化苏州百度推广开户
  • 网站有多少个网站建设与管理介绍
  • 网站建站报告2000字查询公司的网站
  • 兰州网站制作服务电话博客建站模板
  • 网站后台登陆路径网站网站优化
  • wordpress仿站方法网站图片做伪静态
  • 怎么做一款贷款网站蚌埠seo公司
  • 做羊水亲子鉴定网站企业vi设计公司定制
  • 网站开发和微信开发需要什么人一个服务器放多少网站
  • 做6个页面的网站郑州seo优化顾问热狗
  • 网站建设 落地页中国石化工程建设有限公司怎么样
  • 网站建设 软文发布wordpress调取列表页
  • php网站服务器架设清远哪里有网页设计培训学费
  • 建站开发搜索引擎排名查询
  • 如何建设自己的网站 知乎怎么做电力设计公司网站
  • 效果图代做网站网站服务体系
  • 成都网站开发团队减肥养生网站建设
  • 个人做网站需要资质吗用php做网站的书籍
  • 开发一个交易网站多少钱做哪类网站比较赚钱
  • 帮人做彩票网站支付接口成都网络推广培训哪家好
  • 电子商务网站建设的教案404 not found wordpress
  • 怎样建设一个购物网站什么网站可以做直播
  • 石家庄网站开发培训灵犀科技网站开发佼佼者
  • 做阿里还是网站三个律师做网站合适吗