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

wordpress表单数据提交深圳seo顾问

wordpress表单数据提交,深圳seo顾问,做棋牌推广网站违法不,深圳有实力的网站建设服务商1. 高级映射 例如有两张表, 分别为班级表和学生表 自然, 一个班级对应多个学生 像这种数据 , 应该如果如何映射到Java的实体类上呢? 这就是高级映射解决的问题 以班级和学生为例子 , 因为一个班级对应多个学生 , 因此学生表中必定有一个班级编号字段cid 但我们在学生的实体…1. 高级映射 例如有两张表, 分别为班级表和学生表 自然, 一个班级对应多个学生 像这种数据 , 应该如果如何映射到Java的实体类上呢? 这就是高级映射解决的问题 以班级和学生为例子 , 因为一个班级对应多个学生 , 因此学生表中必定有一个班级编号字段cid 但我们在学生的实体类中不需要加入这个字段, 而是通过另一个方法实现一对多映射/多对一映射 1.1 高级映射的分类 关联映射Association Mapping 关联映射用于处理对象之间的一对一关系。例如一个订单对象可能包含一个关联的客户对象。通过使用 MyBatis 的关联映射你可以在查询订单的同时自动填充每个订单所关联的客户信息。 集合映射Collection Mapping 集合映射用于处理一对多关系。例如一个客户可能有多个订单。在 MyBatis 中你可以定义映射规则来自动将客户的所有订单作为一个集合属性加载到客户对象中。 1.2 前置知识 如何区分主表和副表? 原则: 谁在前谁就是主表 例如 多对一: 多(学生)在前, 多(学生)就是主表 一对多: 一(班级)在前, 一(班级)就是主表 1.2 多对一关系的实现 首先 既然是多(学生)对一(班级)关系 , 此时学生是主表(主对象), 那么学生实体类中应当加入班级对象的声明 private Clazz clazz;1.2.1 多对一映射的第一种方式 一条SQL语句 , 级联属性映射 仅在studentMapper接口中声明一个方法 !--id为studentResultMap的resultMap的数据 , 按照以下规则映射到实体上 -- resultMap idstudentResultMap typestudent/!--主键映射 -- id propertysid columnsid/ result propertysname columnsname/!--嵌套的班级对象映射 -- result propertyclazz.cid columncid/ result propertyclazz.cname columncname/ /resultMap!--id为selectById的查询语句, 查询结果放到id为studentResultMap的resultMap中 -- select idselectById resultMapstudentResultMapselects.sid,s.sname,c.cid,c.cnamefrom !--多表连接, 主表在前 --t_student s left join t_clazz c on s.cid c.cidwheres.sid{sid} /select测试 sout(student.getSid()); sout(student.getClazz().getCid()); sout(student);1.2.2 多对一映射的第二种方式 , 一条SQL语句 , 采用association标签 在StudentMapper中定义一个新接口方法 Student selectByIdAssociation(Integer id);!--id为studentResultMapAssociation的resultMap的数据 , 按照以下规则映射到实体上 -- resultMap idstudentResultMapAssociation typestudent/!--主键映射 -- id propertysid columnsid/ result propertysname columnsname/!--班级属性映射采用Association标签. 一个Student对象关联一个Clazz对象 property指定映射的具体对象 -- association propertyclazz javaTypecom.sunsplanter.pojo.Clazzid propertycid columncid/result propertycname columncname/ /association/resultMap!--id为selectByIdAssociation的查询语句, 查询结果放到id为studentResultMapAssociation的resultMap中 -- select idselectByIdAssociation resultMapstudentResultMapAssociationselects.sid,s.sname,c.cid,c.cnamefrom !--多表连接, 主表在前 --t_student s left join t_clazz c on s.cid c.cidwheres.sid{sid} /select1.2.3 多对一映射的第三种方式 两条SQL语句 ,分步查询 常用 优点是可复用, 且支持懒加载 基本思路是: 既然是多对一, 那么先查询多(学生)的信息, 从中拿到cid , 然后再用cid另外查询一次班级表 两条SQL语句自然要有两个接口方法 ,分别位于StudentMapper和ClazzMapper中 public interface StudentMapper{//分布查询的第一步, 先根据学生的sid查出学生信息 Student selectByIdStep1(Integer sid);}public interface ClazzMapper{//分布查询的第一步, 先根据学生的sid查出学生信息 Clazz selectByIdStep2(Integer cid);}两个mapperxml文件分别为 !--id为studentResultMapAssociation的resultMap的数据 , 按照以下规则映射到实体上 -- resultMap idstudentResultMapByStep typecom.sunsplanter.pojo.Student/ !--主键映射-- id propertysid columnsid/ result propertysname columnsname/!--班级属性映射采用Association标签. 一个Student对象关联一个Clazz对象 property指定映射的具体对象 -- association propertyclazz id propertycid columncid/!--指定第二步SQL语句的ID --!--将cid字段作为查询传入第二步SQL语句--selectcom.sunsplanter.mapper.ClazzMapper.selectByIdStep2columncid /association /resultMapselect idselectByIdStep1 resultMapstudentResultMapByStepselectsid, sname cid from t_studen where sid #{sid} /select!--由于查询的结果与实体属性完全一致, 不需要再写resultMap标签进行结果映射--select idselectByIdStep2 resultTypecom.sunsplanter.pojo.Clazzselectcid,cname from t_clazz where cid #{cid} /select测试结果: 可以发现确实是先查了学生的信息得到cid, 再以cid去查班级信息 ,最终拼接起来输出的 1.2.4 多对一的懒加载 表连接里有一个概念叫笛卡尔积. 越多的表越多的匹配次数. 通过在association标签中增加fetchTypelazy属性来开启懒加载 或在mybati config文件中的全局的setting标签中开启 settings setting namelazyLoadingEnabled valuetrue/ /settings实际开发中往往是这样: 先在全局开启懒加载 , 对于特定需要全部加载的语句 通过在association标签中增加fetchTypeeager属性来关闭懒加载 1.2.5 测试 在上例中 , 假如我们没有开启懒加载 此时我们只需要完整的学生信息. sout(Student); 仍会执行两条语句, 查询两张表, 即使根本没用到第二张表 开启懒加载后 , 便只会执行第一条selectByIdStep1的SQL语句 1.3 一对多关系的实现 需求: 根据班级ID查询指定班级下的所有学生信息 一(班级)对多(学生) , 因此班级是主表 一对多的实现 ,通常是在一(班级)的一方声明一个List集合属性 在班级类中增加 private ListStudent stus;1.3.1 一对多映射的第一种实现 collection 与多对一并无本质区别, 核心是resultMap标签中的association标签换为collection标签 !--id为clazzResultMap的resultMap的数据 , 按照以下规则映射到实体上 -- resultMap idclazzResultMap typecom.sunsplanter.pojo.clazz/ !--主键映射-- id propertycid columncid/ result propertycname columncname/!-- property属性指定Clazz实体类中定义的List的名称 , ofType指定Clazz实体类中定义的List中的存储对象-- collection propertystus ofTypecom.sunspalnter.pojo.Student id propertysid columnsid/result propertysname columnsname/ /collection /resultMap测试结果, 可以看到班级表(主表)左外连接学生表 1.3.2 一对多映射的第一种实现 分步查询 !--id为clazzResultMapStep的resultMap的数据 , 按照以下规则映射到实体上 -- resultMap idclazzResultMapStep typecom.sunsplanter.pojo.clazz/ !--主键映射-- id propertycid columncid/ result propertycname columncname/!-- property属性指定Clazz实体类中定义的List的名称 , ofType指定Clazz实体类中定义的List中的存储对象-- collection propertystus !--select指定第二步的SQL语句ID , column指定将cid字段作为参数传入第二步--selectcom.sunsplanter.mapper.StudentMapper.selectByCidStep2 columncid/ /resultMapselect idselectByIdStep1 resultMapclazzResultMapStepselectcid,cname from t_clazz where cid #{cid} /selectselect idselectByCidStep2 resultTypecom.sunsplanter.pojo.Studentselectsid,sname from t_student where sid #{sid} /select测试结果 1.4 多对多和一对一 多对多实际就是分解为两个一对多 2. 缓存 缓存的作用: 通过减少IO的方式来提高程序的执行效率 常用的缓存技术有: 字符串常量池 , 整型数常量池 , 线程池 , 连接池 mybats的缓存存:将select语的查询结果放到到缓存(内存) 下次还是这条select的话直接从缓存(内存)中取不再从外存中查. mybatis缓存包括: 一级缓存:将查询到的数据存储到SqlSession中。二级缓存:将查询到的数据存储到SqlSessionFactory中 , 缓存空间更大或者集成其它第三方的缓存: 比如EhCache[Java语言开发的]、Memcache[C语言开发的] 缓存只针对于DQL语句也就是说缓存机制只对应select语句. 2.1 一级缓存 一级缓存默认是开启的。不需要做任何配置 2.1.1 一级缓存生效 原理:只要使用同一个SqlSession对象执行同一条SQL语句就会走缓存 可以看到 ,当使用同一个sqlSession对象执行相同的SQL语句时, 后台实际只执行了一次, 却输出了两条结果 2.1.1 一级缓存失效 sqlSession对象不是同一个肯定不走缓存查询条件不一样肯定不走缓存即使上述同时两个条件, 如果在第一次DQL和第二次DQL之间发生以下两件事情的任意一件, 会令缓存清空 a. 执行了sqlSession的clearCache()方法 , 这会手动清空一级缓存 b. 执行了INSERT/DELETE/UPDATE任意一个语句时 , 不管是操作哪张表 都会直接清空一级缓存(思想是避免修改了数据后 , 输出缓存中的假数据) 2.2 二级缓存 2.2.1 二级缓存生效 使用二级缓存必须同时具备以下条件 2.2.1 二级缓存失效
http://www.w-s-a.com/news/629677/

相关文章:

  • 学校网站建设目的与意义合肥网页定制
  • 网站查询地址网站建设与维护费用
  • 做网站哪些软件比较好合肥外贸网站建设公司
  • 建网站需要哪些条件专业网站设计报价
  • 定制网站开发技术化妆品的网站布局设计图片大全
  • 网站模糊设计发布产品的免费平台有哪些
  • 网站建站什么目录桂林网站建设内容
  • 光明新区城市建设局网站长沙营销型网站制作费用
  • 网站建设制度制定wordpress主题哥
  • 门户网站的种类php网站开发实训心得
  • 流程图制作网页网络优化seo
  • 个人公益网站怎么制作wordpress flat theme
  • 做营销型网站的公司篇高端网站愿建设
  • 五莲网站建设维护推广凡科做网站的方法
  • 山东省住房建设厅网站首页网站文章更新怎么通知搜索引擎
  • 商务网站的可行性分析包括大流量网站 优化
  • 推广网站有效的方法网站数据统计
  • 自建视频网站WordPress数据库添加管理员
  • 新民电商网站建设价格咨询网站建设高效解决之道
  • 做网站需要哪些步骤网站设计介绍
  • 物流网站制作目的国外中文网站排行榜单
  • 苏州网站建设招标网站ftp的所有权归谁
  • 未央免费做网站河间网站建设
  • 酒庄企业网站app制作多少钱一个
  • 西安模板建网站网站如何做直播轮播
  • 网站功能需求表百度怎么投放自己的广告
  • 如何免费制作网站网站icp备案费用
  • 网站建设最新教程wordpress表白墙
  • android电影网站开发网站建设与设计实习报告
  • 公司汇报网站建设方案烟台seo网站推广